У меня есть эти отношения:COUNT запрос в MYSQL
station
(station_id, широта, долгота)
station_control_manager
(station_id, ctrl_unit_id)
Проблема
имена Tabulate станции, идентификаторы и общее количество контрольных зон в средней части города, , например, широта между 40.750 и 40.760 и долгота от -74.000 до -73.95.
Это мой запрос
SELECT DISTINCT s.station_name, s.station_id, count
FROM station s,
(SELECT cm.station_id, COUNT(cm.station_id) as count
FROM stationcontrolmanager cm GROUP BY cm.station_id) sub_query
WHERE s.latitude >= 40.750
AND s.latitude <=40.760
AND s.longitude >= -74.000
AND s.longitude <= -73.95
GROUP BY s.station_id;
Я считаю, группируя station_id
и подсчитать, сколько раз она повторяется (по repating, мы знаем, сколько диспетчерский центр имеет).
Вместо этого, у меня есть это:
Граф должен был быть число ctrl_unit_id
, которое в данном случае является также количество station_id
. Но в БД я считаю 7 строк, а не 2.
Названия станций все правильно, конечно.
Есть что-то не так с моими операторами SQL?
Вам нужно сообщить MySQL, как 'sub_query' присоединяется к вашей таблице' station': например. добавьте 'AND s.station_id = sub_query.station_id' в предложение' WHERE'. – eggyal
@eggyal Вы правы в этом. Но зачем это нужно? Я добавляю подзапрос в других моих запросах. Не возражаете ли вы объяснить, когда у вас есть время? Благодарю. – user1012451
Без этого вы выполняете полное декартовое перекрестное соединение между 'sub_query' и' station' - то есть будет результирующая строка для каждой строки в 'sub_query', соединенной с каждой строкой в' station'. Читайте в [SQL joins] (http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html). – eggyal