사용자, 활동, 장소 등 PostgreSQL DB에 3 개의 테이블이 있습니다.외부 조인 및 데카르트 제품으로 세 개의 테이블을 결합하는 방법
Users:
- id
- name
Visits:
- id
- user_id
- location_id
Venues:
- id
- name
사용자가 아직 위치를 방문하지 않은 경우 특정 사용자, 이벤트의 모든 활동을 검색하려고합니다. 일부 조인과 나는 그것을 시도했다 :
SELECT venues.id as venue, COUNT(activities.id) as visits
FROM users
RIGHT OUTER JOIN activities ON users.id=activities.user_id
RIGHT OUTER JOIN venues ON activities.venue_id=venues.id
WHERE users.id=1234
GROUP BY venues.id
ORDER BY venues.id
나는 사용자가 위치를 방문 (= 활동에 항목 없음) 활동의 수를 사용자가 경우가하지 않은 경우 방문 변수가 0을 포함 할 위치를 방문했다.
venue | visits
1 3
2 4
3 22
4 1
내가 RIGHT OUTER JOIN
가 오른쪽에서 모든 항목을 반환 할 것이라고 생각하지만,하지 않습니다 :
하지만 난 단지 사용자가 방문했던 위치를 얻는다.
나는 그것을 시도했다, 오른쪽 조인과 동일한 결과를 얻는다. 편집을 위해서 – 23tux
thx가 반환되지만,'JOIN venues AS v' 라인 근처에서 오류가 발생한다. '. 'JOIN venues as v'대신 'FR as users AS u, venues AS v'가되어서는 안됩니까? – 23tux
hmmmm,'* ='는 PostgreSQL에서 작동하지 않습니다. 다른 방법이 있습니까? 그리고 왜 옛 학교 표기법을 말하는거야? ;) – 23tux