2012-11-23 2 views
7

두 개의 테이블이 있습니다. gemd와 gemdetail이 결합되었습니다. 나는 LEFT JOIN을 보석 테이블에있는 10 개의 레코드로 제한하려고합니다. 조인 (gemreply 및 사용자)도 2 개의 다른 테이블에 조인되어 있지만 문제에 기여하지는 않습니다. 다음은 작동하지 않습니다첫 번째 테이블에서 왼쪽 조인을 제한합니다.

SELECT gems.gemid, gems.title, r.tot, gemdetail.filename FROM ((gems 
LEFT JOIN (SELECT gemid, COUNT(*) AS tot FROM gemreply GROUP BY gemid) AS r ON gems.gemid = r.gemid) 
LEFT JOIN gemdetail ON gems.gemid = gemdetail.gemid) 
LEFT JOIN users ON gems.userid = users.userid 
WHERE gems.grade = '7' ORDER BY gems.gemid LIMIT 0, 10; 

이 10에 반환 된 행의 총 수를 제한하지만, 각 보석에 대한 여러 정보 기록이 있기 때문에, 나는 10 개 미만의 보석 기록 왼쪽입니다. 모든 "LIMIT"게시물을 읽었지만이 상황을 발견하지 못했습니다.

업데이트 1 : 확인 - jviladrich 덕분입니다. 또한 작동 아래 yogeshr에서 코드 - 내가 갈거야 아마 하나

SELECT gems.gemid, gems.title, r.tot, gemdetail.filename 
FROM ((gems 
INNER JOIN (SELECT gems.gemid from gems WHERE gems.grade = '7' ORDER BY gems.gemid LIMIT 0, 10) g 
ON (gems.gemid = g.gemid) 
LEFT JOIN (SELECT gemid, COUNT(*) AS tot FROM gemreply GROUP BY gemid) AS r ON gems.gemid = r.gemid) 
LEFT JOIN gemdetail ON gems.gemid = gemdetail.gemid) 
LEFT JOIN users ON gems.userid = users.userid ; 

업데이트 2 : 여기에 코드입니다. 둘 다 감사합니다! 그

SELECT * FROM A 
     INNER JOIN (SELECT * FROM A WHERE A.FIELD1='X' ORDER BY A.FIELD2 LIMIT 10) X 
      ON (A.KEYFIELD=X.KEYFIELD) 
     LEFT JOIN B ON (A.FIELD = B.FIELD) 
     LEFT JOIN C ON (A.FIELD = C.FIELD) 
+0

하위 쿼리 내에서 한도를 이동 하시겠습니까? – Ben

+0

이 MySQL 버전은 아직 'LIMIT & IN/ALL/ANY/SOME 하위 쿼리'를 지원하지 않습니다. 하위 쿼리 내부에서 발생합니다. – mseifert

+0

좋아, 그럼 처음 10 개의 보석과 그 모든 세부 사항에 대한 기록을 원해? 그리고 보석이나 사용자와 함께 또는 왼쪽 가입에 참여 하시겠습니까? – Rachcha

답변

6

뭔가 이것보십시오 :이 작업을해야

SELECT g.gemid, g.title, r.tot, gemdetail.filename 
FROM (SELECT * FROM gems WHERE grade = '7' LIMIT 10) g 
LEFT JOIN (SELECT gemid, COUNT(*) AS tot FROM gemreply GROUP BY gemid) r 
      ON r.gemid = g.gemid 
LEFT JOIN gemdetail ON g.gemid = gemdetail.gemid 
LEFT JOIN users ON g.userid = users.userid 
ORDER BY g.gemid; 

.

4

같은

+0

잘 작동합니다! 나는 이걸로 갈 것입니다 - 그것은 나에게 더 잘 읽습니다. 나는 양쪽 포스트를 답으로 표시 할 수 있었으면 좋겠다. – mseifert

+0

간단합니다 - 가장 유용한 답변을 수락하십시오 :) – Rachcha

관련 문제