2011-07-30 7 views
1

전에 JOIN을 사용 해 본 적이 없으므로 PHP를 사용하여 MySQL 쿼리를 올바르게 작성하는 방법에 문제가 있습니다.MySQL의 적절한 사용 JOIN

나는 테이블 idid, 가격, 등등과 같은 store라는 테이블이 있습니다. 또한 ID가 행과 ID가 행을 item_list라는 테이블이 있습니다.

'store'itemid 's에 액세스 할 수 있기를 원하며 그 ID를 사용하여 item_list ID와 해당 ID의 속성에 액세스하십시오. 다음과 같은 쿼리를 생각해 냈습니다.

$query = "SELECT store.price, item_list.* 
      FROM store, item_list 
      WHERE item_list.id = store.itemid"; 

쿼리를 실행하려고하면 오류가 발생합니다. 어떤 제안?

+0

더 읽기 쉽게, 당신을 도울 수 있습니다. 재밌지 만 질문을 편집 할 수는 있지만 특정 오류는 언급하지 못했습니다. –

+0

예, 죄송합니다. MYSQL 오류가 아니지만 쿼리가 실행되지 않습니다. if 문을 사용합니다. if (! $ result = $ mysqli-> conn ($ query)) {return $ error; } – Alper

답변

2
$query = "SELECT store.price, item_list.* 
      FROM store LEFT JOIN item_list ON item_list.id = store.itemid 

은 또한 당신이 선택하는 열에 대한 명시해야이

WHERE item_list.id = store.itemid 

해야한다. 이는 안전과 성능을위한 것입니다. 다음은 내부 조인 사용하려는

$query = "SELECT s.price, il.col1, il.col2, il.col3 
      FROM store s LEFT JOIN item_list il ON s.itemid = il.id 
+0

고마워요! 코드가 작동했습니다. 나는 테이블 별칭의 사용을 통합하려고 노력할 것이다. – Alper

0

오타가 있습니다. 그것은 당신이 아니라 * 댄,

WHERE item.id = 
+0

음, 무슨 오타!? –

+0

WHERE 절에서 "item"이 (가) 유효한 테이블이 아닙니다. 그들은 "store"와 "item_list"입니다. – Jaxedin

+0

잡아 주셔서 감사합니다! : D – Alper

0

것은 당신이 NULL 값을 갖는 두 테이블의 모든 행을 제외 증 완츠 경우

또 다른 멋진 기능은 SQL 조금 덜 장황하게 테이블 별칭이다. LEFT JOIN은 조인의 왼쪽에 NULL 값이있는 행만 제외합니다.

$query = "SELECT store.price, item_list.* 
     FROM store INNER JOIN item_list ON item_list.id = store.itemid