2012-04-22 2 views
1

데이터베이스에 두 개의 테이블이 있습니다. 하나는 제품 용이고 다른 하나는 제품 이미지 용입니다. 내가 눈치왼쪽 열 중복 열

SELECT * 
from items left join images 
    on items.item_id = images.item_id and 
     items.display_items = '1' and items.active = '1' 
order by items.item_year desc, items.fullname desc, images.position asc 

그러나 모든 제품이 게재되지 않았 음 : 나는 하나 개의 쿼리와 제품 이미지 및 정보를 얻을 수 있도록 나는 테이블을 조인하고 있습니다. 일부 제품에는 이미지가 없으며 표시되지 않는 제품이 있습니다. Sequel Pro에서 내 쿼리를 실행하여 item_id 열이 두 번, ID가 한 번, 한 번 NULL으로 나타났습니다. 모든 제품을 가져 오기 위해 쿼리를 수정하려면 어떻게해야합니까?

답변

2

"select *"를 사용하는 대신 결과에 원하는 정확한 열을 지정하도록 쿼리를 수정합니다. 이 경우 두 테이블에 같은 이름의 열이있을 수 있습니다 (예 : 'item_id'). 이로 인해 'select *'에서 문제가 발생할 수 있습니다.

또한 ON 문 2 행을 WHERE 절에 넣습니다. "items.display_items = '1'및 items.active = '1'"은 참여 항목에 적용되는 것이 아니라 원하는 항목 세트에 적용됩니다.

개정 쿼리 ​​

SELECT --explicit list of columns 
from items 
    left join images 
    on items.item_id = images.item_id 
WHERE items.display_items = '1' and items.active = '1' 
order by items.item_year desc, items.fullname desc, images.position asc 
+0

완벽하게 작동합니다. SELECT *가 문제였습니다. 감사! –

0

당신은 WHERE 절을 놓치고있어. items의 데이터 만 원한다고 가정하면 다음을 시도하십시오.

SELECT it.* 
FROM items it 
LEFT JOIN images im 
ON it.item_id = im.item_id 
WHERE it.display_items = '1' and it.active = '1' 
ORDER BY it.item_year desc, it.fullname desc, im.position asc