두 개의 테이블이 있습니다. 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)
하위 쿼리 내에서 한도를 이동 하시겠습니까? – Ben
이 MySQL 버전은 아직 'LIMIT & IN/ALL/ANY/SOME 하위 쿼리'를 지원하지 않습니다. 하위 쿼리 내부에서 발생합니다. – mseifert
좋아, 그럼 처음 10 개의 보석과 그 모든 세부 사항에 대한 기록을 원해? 그리고 보석이나 사용자와 함께 또는 왼쪽 가입에 참여 하시겠습니까? – Rachcha