Я пытаюсь получить счетчик всех поездок, в которых есть город как из местоположения, так и из местоположения.
Мои таблицы похожи на это:
поездки: rno (int), src (из местоположения lcode), dst (из местоположения lcode)
местоположения: lcode (str), prov (str), city (str)
Я хочу вернуть список городов и провинций, а также количество поездок, в которых этот город указан как местоположение "src", и количество поездоку которого этот город является местоположением "dst".
Я попытался смоделировать его следующим образом:
SELECT
l.city,
l.prov,
COUNT(rsrc.rno)
FROM
locations l
LEFT OUTER JOIN rides rsrc ON l.lcode = rsrc.src
GROUP BY
l.city
Это прекрасно работает и возвращает правильный набор данных:
Calgary|Alberta|3
Edmonton|Alberta|37
Jasper|Alberta|0
Regina|Saskatchewan|1
Saskatoon|Saskatchewan|1
Vancouver|British Columbia|1
однако, когда я пытаюсь снова присоединиться к поездкам, чтобы получить dst, все результаты неверны:
SELECT
l.city,
l.prov,
COUNT(rsrc.rno),
COUNT(rdst.rno)
FROM
locations l
LEFT OUTER JOIN rides rsrc ON l.lcode = rsrc.src
LEFT OUTER JOIN rides rdst ON l.lcode = rdst.dst
GROUP BY
l.city
Результат этого запроса:
Calgary|Alberta|19|21
Edmonton|Alberta|86|96
Jasper|Alberta|0|0
Regina|Saskatchewan|1|1
Saskatoon|Saskatchewan|2|2
Vancouver|British Columbia|1|3
результаты не имеют смысла для меня, поэтому я предполагаю, что я делаю что-то логически неправильно, но я не знаю что.Может кто-нибудь сказать мне, почему это дает мне нежелательные результаты?