조인을 사용하여 하나의 SQL 문으로 2 개의 테이블에서 데이터를 가져 오려고합니다. 아이디어는 아주 간단합니다. 프로젝트에는 참가자가 있으며, 프로젝트 개요에는 참가자의 수와 함께 프로젝트 정보가 표시됩니다.LEFT OUTER JOIN이 모든 행을 표시하지 않습니까?
지금은 참여자가있는 프로젝트와 참여자가없는 다른 프로젝트가 2 개 있습니다.
SELECT SQL_CALC_FOUND_ROWS `p`.`id`,
`p`.`title`,
`p`.`live`,
`p`.`startDate`,
`p`.`endDate`,
COUNT(`part`.`id`) AS `participants`
FROM `projects` `p`
LEFT OUTER JOIN `participants` `part`
ON `p`.`id` = `part`.`projectid`
ORDER BY `p`.`live` DESC,
`p`.`startDate` DESC
LIMIT 0,10
문제이며,이 쿼리는 참가자들과 프로젝트를 반환하고 참가자없이 하나가 탈락되어
나는이 쿼리를 사용합니다.
내가 뭘 잘못하고 있니?
이것은 효과가 있습니다! 감사! 이유를 설명해 주시겠습니까? 나는 이제 그것이 작품이라는 것을 알고 있지만 실제로 작동하는 이유는 모르겠다. – SheperdOfFire
집계 함수'COUNT()'를 적용하고 단일 값이 아닌 그룹 당 결과를 얻고 싶다면 (프로젝트 당 경우) 결과를 얻기를 원하기 때문에'GROUP BY'를 사용해야합니다. – peterm
저는 실제로 꽤 흥미 롭습니다. 상관 관계가있는 하위 쿼리와 비교하여이 모양의 성능이 어떻습니까? 비슷한 지 아니면 잠재적으로 더 효율적일까요? – Kaiwa