테스트 사이트 - 개발 중인 베타 버전입니다

전혀 다른테이블의 값을 가져와서 출력하는 방법 채택완료

지솩 3년 전 조회 2,065

Member 테이블

name 필드에 "홍길동,김감자.."

 

Info 테이블은

name 필드 "홍길동", age 필드 "30세", job 필드 "공무원"

name 필드 "김감자", age 필드 "40세", job 필드 "무직" ...

</p>

<p>$sql = "select * from member";</p>

<p>$result = sql_query($sql);</p>

<p> </p>

<p>foreach($result as $row){</p>

<p>    $sql2 = "select * from info where name= '{$row['name']}'";</p>

<p>    $result2 = sql_fetch($sql2);</p>

<p>이름: $row['name'];</p>

<p>나이 : $result2['age'];</p>

<p>}</p>

<p>

 

이렇게 하니까 너무 속도가 느려지는데 좋은 방법이 없을까요?

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 5개

채택된 답변
+20 포인트
B
3년 전

사용하는 필드만 명시하면 좋습니다.

name에 인덱스 걸어주면 좋습니다.

</p>

<p>$sql = "SELECT M.name, I.age FROM member AS M LEFT JOIN info AS I ON M.name=I.name";

$result = sql_query($sql);

foreach ($result as $row) {

    echo '이름 : ', $row['name'], '
';

    echo '나이 : ', $row['age'], '
';

}</p>

<p>

- https://www.google.com/search?q=mysql+join

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

지솩
3년 전
감사합니다 많은 도움되었습니다!

댓글을 작성하려면 로그인이 필요합니다.

감사합니다 도움되었습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

n
3년 전

추가 피해자 방지 https://sir.kr/conflictconsultation/245" rel="nofollow noreferrer noopener" target="_blank">https://sir.kr/conflictconsultation/245

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

유찬아빠
$sql = "select * from member a inner join info b on (a.name=b.name) ";
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

지솩
3년 전
감사합니다!

댓글을 작성하려면 로그인이 필요합니다.

세크티
3년 전
$sql = "select * from member a inner join info b where a.name=b.name";
</code><code>$result = sql_query($sql);
foreach($result as $row){ ... }</code></pre>

<p><code>

어차피 지금 방식이 동명이인은 따로 생각안하시는거 같아서

위 코드 처럼 조인해서 하면 조금더 빨라질거라 봅니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

지솩
3년 전
아 이렇게 하는거였군요.. inner join 에 대해 알아봐야겠습니다. 그런데 남겨주신 sql문을 넣고 돌리니 에러가 나는데 고쳐야 할 부분이 있을까요?

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인