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

Тема в разделе "SQL", создана пользователем Andronis, 5 фев 2012.

  1. Andronis

    Andronis Гость

    Здравствуйте, уважаемые! Подскажите пожалуйста с выполнением запросов:
    есть база
    [​IMG]
    Необходимо найти названия всех маршрутов с указанием общего количества пассажиров, по каждому маршруту?
    Как я делаю, я выбираю через левое внешнее объединение все маршруты и получается, что в одной базе результирующая таблица получается правильной, количество пассажиров верное, а в другой, где я не могу просмотреть данные, выбирает более меньшее количество и не правильные маршруты?
    Вот сам мой запрос:
    Код (LotusScript):
    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 и в результате получается, что запрос возвращает не правильные записи. Вот пример запроса:

    Код (LotusScript):
    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, и те значения которые есть во второй части запроса?
    Код (LotusScript):
    select r.name_route,
    t.cod_trip
    from routes r
    left outer join trips t on (r.cod_route = t.cod_route)
    Код (LotusScript):
    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
     
  2. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    18
    1. Тут надо делать inner, left тут ни с какого боку.

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

    batman1980 Гость

    Отлично
     
Загрузка...

Поделиться этой страницей