выбор из одной таблицы, если значения в другой таблице соответствуют значению в первой таблице - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть 2 таблицы, Город и driveRoute . Город имеет атрибуты State и cityCode. driveRoute имеет атрибуты происхождения и назначения.

Город данные выглядят следующим образом: TX |ABI

driveRoute данные выглядят следующим образом: ABI |ABQ

то, что я хотел бы получить в результате: TX |15, где TX - Техас (пример), а 15 - количество маршрутов в Техасе (пример).

Я пытаюсь получить отдельные состояния с количеством маршрутов, в которых driveRoute имеет одинаковое происхождение.и состояние назначения.То, что у меня есть, дает мне общее количество маршрутов с отправлением или пунктом назначения в состоянии:

SELECT DISTINCT state,COUNT(state) AS count
FROM driveRoute join
     City
     on origin = cityCode
GROUP BY state
ORDER BY count DESC
LIMIT 5;

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Сначала получите строки из driveRouteкоторые содержат Origin и Destination из того же Stateа затем GROUP BY State:

SELECT t.State, COUNT(*) AS counter FROM (
  SELECT c2.State, driveRoute.*
  FROM  
    (driveRoute INNER JOIN City AS c1 ON driveRoute.Origin = c1.cityCode) 
    INNER JOIN City AS c2 ON driveRoute.Destination = c2.cityCode
  WHERE 
    c1.State = c2.state
) AS t
GROUP BY t.State
ORDER BY counter DESC LIMIT 5;
0 голосов
/ 30 декабря 2018

Если я правильно понимаю, вам нужно два join s:

SELECT co.state, COUNT(*)
FROM driveRoute dr JOIn
     City co
     ON dr.origin = co.cityCode JOIN
     City cd
     ON dr.destination = cd.cityCode
WHERE co.state = cd.state
GROUP BY co.state;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...