채택완료

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

2021-12-02 (목) 08:10:44 2,224

Member 테이블

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

Info 테이블은

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

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

Copy
$sql = "select * from member";

$result = sql_query($sql);

 

foreach($result as $row){

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

    $result2 = sql_fetch($sql2);

이름: $row['name'];

나이 : $result2['age'];

}

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

|

답변 5개 / 댓글 3개

채택된 답변
+20 포인트
2021-12-02 (목) 10:20:22

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

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

Copy
$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'], '<br>';
    echo '나이 : ', $row['age'], '<br>';
}

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

답변에 대한 댓글 1개

감사합니다 많은 도움되었습니다!
2021-12-04 (토) 14:06:39

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

2021-12-02 (목) 08:47:48
$sql = "select * from member a inner join info b on (a.name=b.name) ";

답변에 대한 댓글 1개

감사합니다!
Copy
$sql = "select * from member a inner join info b where a.name=b.name";
$result = sql_query($sql);
foreach($result as $row){ ... }

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

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

답변에 대한 댓글 1개

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

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