source

쿼리에 오류가 없고 행도 0개 반환되는 이유는 무엇입니까?

goodcode 2022. 9. 20. 23:59
반응형

쿼리에 오류가 없고 행도 0개 반환되는 이유는 무엇입니까?

이 쿼리는 사용자 수 + 각 사용자가 만든 잠재력 수 + 변환된 모든 잠재력 수를 얻기 위해 작성되었습니다.다음과 같이 표시됩니다.

SELECT u.*, p.allPotentials, pc.cPotentials 
   FROM os_user u
JOIN (SELECT FID_author, count(*) allPotentials FROM os_potential) p 
   ON p.FID_author = u.ID 
JOIN (SELECT converted, FID_author, count(*) cPotentials FROM os_potential) pc 
   ON p.FID_author = u.ID AND pc.converted = 1

답변에서 설명한 바와 같이 1개의 쿼리를 조합할 수 있도록 상관없는 서브쿼리로 하려고 합니다.근데 0행이에요.

테이블은 다음과 같습니다.

사용자:

+----+------+-------+
| ID | Name | Email |
+----+------+-------+

가능성:

+----+------+-------+------------+-----------+
| ID | Name | Email | FID_author | converted |
+----+------+-------+------------+-----------+

FID_author는 외부 키, 사용자 ID입니다.

쿼리는 0 행을 반환하고 있으며 오류는 표시되지 않습니다.내가 뭘 잘못하고 있지?

편집

지금까지의 질문:

SELECT u.*, p.allPotentials, pc.cPotentials 
   FROM os_user u
LEFT JOIN (SELECT FID_author, count(*) allPotentials 
   FROM os_potential GROUP BY FID_author) p 
   ON p.FID_author = u.ID 
LEFT JOIN (SELECT converted, FID_author, count(*) cPotentials 
   FROM os_potential GROUP BY FID_author) pc 
   ON p.FID_author = u.ID 
   AND pc.converted = 1 
GROUP BY u.ID

거의 예상대로 결과가 나오고 있는데 문제는cPotentials모든 행에 1이 포함되어 있습니다.이것은 false입니다.1개보다 훨씬 많다.어디가 문제입니까?

하위 쿼리에서 그룹이 누락되어 왼쪽 조인을 사용합니다.

SELECT u.*, p.allPotentials, pc.cPotentials 
 FROM os_user u
LEFT JOIN (SELECT FID_author, count(*) allPotentials FROM os_potential 
                  GROUP BY FID_author) p 
 ON p.FID_author = u.ID 
LEFT JOIN (SELECT converted, FID_author, count(*) cPotentials FROM os_potential 
                   GROUP BY converted,FID_author) pc 
 ON pc.FID_author = u.ID AND pc.converted = 1

언급URL : https://stackoverflow.com/questions/39408385/why-my-query-shows-no-errors-but-also-returns-zero-rows

반응형