• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Вопросы При Объединений Таблиц

  • Автор темы Andronis
  • Дата начала
A

Andronis

Здравствуйте, уважаемые! Подскажите пожалуйста с выполнением запросов:
есть база
3bcfbd0d3bbd.jpg

Необходимо найти названия всех маршрутов с указанием общего количества пассажиров, по каждому маршруту?
Как я делаю, я выбираю через левое внешнее объединение все маршруты и получается, что в одной базе результирующая таблица получается правильной, количество пассажиров верное, а в другой, где я не могу просмотреть данные, выбирает более меньшее количество и не правильные маршруты?
Вот сам мой запрос:
Код:
select r.name_route, 
sum (m.places) as people 
from routes r
left outer join trips t on (r.cod_route = t.cod_route)
left outer join buses b on (t.cod_bus = b.cod_bus)
left outer join models m on (b.cod_model = m.cod_model)
group by r.name_route

Если выполняю запрос через полное объединение то результирующая таблица выводится правильно с одним но, появляется нулевая строка в поле name_route, которую убираю where r.name_route is not null и в результате получается, что запрос возвращает не правильные записи. Вот пример запроса:

Код:
select r.name_route, 
sum (m.places) as people
from routes r 
full join trips t on (r.cod_route = t.cod_route)
full join buses b on (t.cod_bus = b.cod_bus)
full join models m on (b.cod_model = m.cod_model)
where r.name_route is not null
group by r.name_route

и второй вопрос как правильно объединить вот эти два запроса в один, смысл в том чтобы вывести весь список из таблицы routes, если даже нет значений, там должен быть null, и те значения которые есть во второй части запроса?
Код:
select r.name_route, 
t.cod_trip 
from routes r
left outer join trips t on (r.cod_route = t.cod_route)
Код:
select r.name_route, 
count (t.cod_trip) 
from trips t
inner join routes r on (r.cod_route = t.cod_route) 
where t.week_day between 6 and 7
group by r.name_route
 
M

-master-

1. Тут надо делать inner, left тут ни с какого боку.

Добавлено: Второй вопрос не понял, что к чему... первый селект понятен, а чтоделаетвторой и на кой он нужен ..?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!