[SQL] 왼쪽 외부는 내 왼쪽 테이블에서 모든 행을 반환하지 않습니다하세요?
SQL왼쪽 외부는 내 왼쪽 테이블에서 모든 행을 반환하지 않습니다하세요?
나는 다음과 같은 쿼리를 사용하여 하루 단위로 열립니다 페이지의 수를 얻기 위해 노력하고 있어요.
SELECT day.days, COUNT(*) as opens
FROM day
LEFT OUTER JOIN tracking ON day.days = DAY(FROM_UNIXTIME(open_date))
WHERE tracking.open_id = 10
GROUP BY day.days
나는 그것을 얻을 출력은 이것이다 :
days opens
1 9
9 2
문제는, 내 하루 테이블에, 한 달에 일을 대표하는 30까지의 숫자를 포함하는 단일 컬럼을 가지고있다. 나는 왼쪽 외부 조인 않았고 나는 모든 일이 일 칼럼에 표시하도록 기대하고 있습니다!
하지만 내 쿼리가 그 일을하고, 그 이유는 될 수 있을까요?
덕분에 어떤 도움에 대한 모든.
해결법
-
==============================
1.당신이 원하는 결과 (당신의 WHERE 절 제거합니다 행을)하지 않지만, 그것을 해결하기 위해 어떻게하지 왜 주어진 Nanne의 대답은 설명합니다.
당신이 원하는 결과 (당신의 WHERE 절 제거합니다 행을)하지 않지만, 그것을 해결하기 위해 어떻게하지 왜 주어진 Nanne의 대답은 설명합니다.
WHERE 용액을 변경하는 것 등을 조건 상태가 아니라 필터 조인 후에 적용 조인의 일부임을 :
SELECT day.days, COUNT(*) as opens FROM day LEFT OUTER JOIN tracking ON day.days = DAY(FROM_UNIXTIME(open_date)) AND tracking.open_id = 10 GROUP BY day.days
이제 왼쪽 테이블의 모든 행은 결과에있을 것입니다.
-
==============================
2.당신은 그래서 그들은 나타나지 않을 것이다, 연결된 tracking.open_id 그것이 NULL이됩니다 다른 행 10.이어야 지정!
당신은 그래서 그들은 나타나지 않을 것이다, 연결된 tracking.open_id 그것이 NULL이됩니다 다른 행 10.이어야 지정!
from https://stackoverflow.com/questions/4707673/left-outer-join-doesnt-return-all-rows-from-my-left-table by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL Server의 계산 중간에 기능 (0) | 2020.03.10 |
---|---|
[SQL] SQL Server의 숫자, 부동 소수점과 소수의 차이 (0) | 2020.03.10 |
[SQL] 당신은 MySQL의에서 WHERE 절에 별칭을 사용할 수 있습니까? (0) | 2020.03.10 |
[SQL] PostgreSQL을 GROUP_CONCAT 동등한? (0) | 2020.03.10 |
[SQL] SQL은 - VS 어디를 가진 (0) | 2020.03.10 |