2016-08-10 3 views
0

아래 쿼리가 있는데 올바른 데이터를 가져 오지만 사진 테이블의 첫 번째 행만 포함되도록 조인 결과를 제한해야합니다. 다음은 내가 가지고있는 것입니다 :두 번째 테이블에서 조인 결과 제한

SELECT `listings`.*, `photos`.* 
FROM `listings` JOIN `photos` 
ON `photos`.`listing_id` = `listings`.`id` 
WHERE `listings`.`date_expires` >= '2016-08-10' AND `listings`.`visible` = '1' AND `listings`.`spotlightListing` >= '2016-08-10' 

어떻게 사진 테이블에서 첫 번째 행을 얻을 수 있습니까? 감사!

+0

먼저 "첫 번째 행"이 의미하는 것을 정의해야합니다. 그러면 [these] (http://stackoverflow.com/search?q=%5Bmysql%5Deach+group)가 관련성이 있습니다. – Uueerdo

+0

"첫 번째 행"은 테이블이 조인 될 때 ​​최종 결과가 일치하는 "리스팅"결과가 모두 반환되어야하며 각각의 결과가 "사진"테이블의 첫 번째 결과를 가져야한다는 것을 의미합니다. 즉, 각 목록에 10 장의 사진이 있고 5 개의 목록이 WHERE에 일치하면 반환 된 행 5 개 (각 사진에는 사진 1 장으로 만 표시됨)로 끝나야합니다. – falc2

+0

끝나는 행에 고유 한 순서는 없습니다. 목록과 일치하는 사진에서 (사실상) 무작위 추출을 원하거나 목록에 입력 된 첫 번째 사진이 첫 번째 합류가 될 것이라고 기대하고 있습니까? – Uueerdo

답변

1
SELECT `listings`.*, `photos`.* 
FROM `listings` 
JOIN `photos` ON `photos`.`listing_id` = `listings`.`id` 
WHERE `listings`.`date_expires` >= '2016-08-10' AND `listings`.`visible` = '1' 
AND `listings`.`spotlightListing` >= '2016-08-10' 
limit 1 

나는 당신이 목록 레코드의 첫 번째 사진에 대해 말할 것입니다.

+1

주문하지 않고 제한하는 것은 상당히 의미가 없습니다. – Strawberry

+0

사진 한 장만 가져 오는 경우 주문과 함께 갈 수 있지만 LEFT 조인을 추가해야하므로 비어있는 경우 결과 세트를 건너 뜁니다. –

+0

나는 그걸 시도했지만 이전과 같은 문제에 부딪 혔다. 일치하는 '목록'테이블 결과가 모두 반환되는 결과를 얻으려고하고 있으며 각 결과에는 결합 된 '사진'테이블의 첫 번째 결과 만 있습니다. – falc2

관련 문제