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>';
}
답변에 대한 댓글 1개
2021-12-04 (토) 14:06:39
감사합니다 도움되었습니다.
nabiwa
2021-12-02 (목) 11:07:46
추가 피해자 방지 https://sir.kr/conflictconsultation/245
2021-12-02 (목) 08:47:48
$sql = "select * from member a inner join info b on (a.name=b.name) ";
답변에 대한 댓글 1개
2021-12-02 (목) 08:20:26
Copy
$sql = "select * from member a inner join info b where a.name=b.name";
$result = sql_query($sql);
foreach($result as $row){ ... }
어차피 지금 방식이 동명이인은 따로 생각안하시는거 같아서
위 코드 처럼 조인해서 하면 조금더 빨라질거라 봅니다.
답변에 대한 댓글 1개
2021-12-02 (목) 08:35:14
아 이렇게 하는거였군요.. inner join 에 대해 알아봐야겠습니다. 그런데 남겨주신 sql문을 넣고 돌리니 에러가 나는데 고쳐야 할 부분이 있을까요?
답변을 작성하려면 로그인이 필요합니다.