Консультация № 168007
22.05.2009, 18:12
0.00 руб.
0 4 2
Здравствуйте, уважаемые эксперты! У меня есть 2 связанных таблицы в SQL Server: Транспорт и Маршрут. Мне на их основе нужно сделать запрос, который бы для каждой начальной и конечной остановки(таблицы "Маршрут") посчитал количество видов транспорта, в них задействованных (максимум 3 вида) и вывел бы результат. Например, остановка Металлург является начальной для двух видов транспорта обозначенных как 1 и 2, которые в другой связанной таблице "Транспорт" идентифицируются как Автобус и Трамвай соответственно! В приложении я разместил ссылки для этих 2 таблиц. Кто бы мог помочь с таким запросом? Заранее благодарен, тем кто откликнется на помощь!!!

Приложение:
http://opentorrent.ru/imagehost/2416/090522172711f0_0.bmp - таблица "Транспорт"
http://opentorrent.ru/imagehost/2416/090522172711f0_1.bmp - таблица "Маршрут"

Обсуждение

Неизвестный
23.05.2009, 13:00
общий
это ответ
Здравствуйте, Denton87!
для конечной остановки

SELECT маршрут.[конечная остановка], транспорт.транспорт, COUNT(транспорт.id) AS 'количество'
FROM транспорт INNER JOIN
маршрут ON транспорт.id = маршрут.[вид транспорта]
GROUP BY маршрут.[конечная остановка], транспорт.транспорт
ORDER BY маршрут.[конечная остановка]

для начальной остановки

SELECT маршрут.[начальная остановка], транспорт.транспорт, COUNT(транспорт.id) AS 'количество'
FROM транспорт INNER JOIN
маршрут ON транспорт.id = маршрут.[вид транспорта]
GROUP BY маршрут.[начальная остановка], транспорт.транспорт
ORDER BY маршрут.[начальная остановка]
Неизвестный
23.05.2009, 14:16
общий
это ответ
Здравствуйте, Denton87!

Что-то вроде этого (к сожалению нет возможности протестировать):
Код:

select [Остановка], count([Вид транспорта]) from
(select [Начальная остановка] as [Остановка], [Вид транспорта] from [Маршрут] union
select [Конечная остановка] as [Остановка], [Вид транспорта] from [Маршрут]) group by [Остановка]


Кстати, логичнее было бы остановки вынести в отдельную таблицу.
Неизвестный
23.05.2009, 16:24
общий
Спасибо большое! К сожалению дома нет возможности проверить, в понедельник опробуем ;)
Неизвестный
26.05.2009, 15:45
общий
Проверил, в принципе работает, но потом потребовалось переделать это в графическом дизайнере в несколько промежуточных ходов, а также объединить начальные и конечные остановки. Я дошел до этапа где есть 2 таблицы - одна с 2 столбцами(начальные остановки и количество видов транспорта для каждой), другая аналогично для конечных остановок. и В итоге нужно сделать запрос, в котором названия остановок без повторов и сумма количества видов транспорта из каждой таблицы. Вот я всё это почти сделал, сделал запрос объединения остановок без повторов, на основе запроса, с которым вы мне помогли, осталось в только каким то образом просуммировать столбцы Expr3 из каждой из таблиц, в случае если это нужно, так как некоторые остановки не повторяются. Ниже располагаю ссылки на эти таблицы:
http://opentorrent.ru/imagehost/2416/090526162735f0_0.jpg - таблица view3
http://opentorrent.ru/imagehost/2416/090526162735f0_1.jpg - таблица view4
http://opentorrent.ru/imagehost/2416/090526162735f0_2.jpg - таблица по объединению двух предыдущих, но без суммирования. Как раз таки тут нужно добавить столбец сумм для каждой остановки.

Заранее благодарен, если вы снова согласитесь пойти мне на помощь!!!
Форма ответа