singlepost

SQL запросы, SELECT + INSERT, нужна помощь << На главную или назад  

1. Вывести самое короткое время проезда по заданному наименованием маршруту и номер автомобиля, который поставил рекорд.

SELECT name, time_out, time_in, number
FROM routes, journal, auto
WHERE routes.idd = journal.route_id AND routes.name = 'NewCity'
AND journal.auto_id = auto.idd;

- Но как посчитать самое короткое время проезда?

Вставка данных
• однотабличная вставка
2. Добавить водителю с заданной фамилией два автомобиля
INSERT INTO auto (pers_id)
SELECT idd FROM personnel WHERE family = 'Skamejkin';

- Вот так работает, но добавляет только Id водителя, а как добавить ещё марку машину, цвет, номер? И как добавить 2 машины сразу?

7 ответов в теме “SQL запросы, SELECT + INSERT, нужна помощь”

  1. 1
    Виктор Ручкин ответил:

    Что за БД?
    Для оракла так:

    1. Выбираешь min(time_out – time_in) as min_time. И оборачиваешь сверху запрос с условием time_out – time_in = min_time. Как-то так
    2.1: Через запятую в селекте перечисляешь поля.
    2.2: Попробуй
    SELECT p.idd, dummy."марку машину", dummy.цвет,dummy.номер FROM personnel p,
    (select марку машину, цвет, номер from dual
    union
    select марку машину, цвет, номер from dual) dummy
    WHERE p.family = 'Skamejkin'

    Для других БД запрос из фиктивной таблицы выглядит иначе, но в любом случае отдельно формируешь набор данных для каждой машины и пересекаешь с водителем (т.к. водитель у тебя один, то катит картежное соединение).

  2. 2
    Василий Рейсер ответил:

    Microsoft SQL

  3. 3
    Леонид Максимов ответил:

    >> Вывести самое короткое время проезда по заданному наименованием маршруту и номер автомобиля, который поставил рекорд.

    select top 1 name, time_out, time_in, number
    from routes
    inner join journal on journal.route_id = routes.idd
    inner join auto on auto.idd = journal.auto_id
    where routes.name = 'NewCity'
    order by time_out – time_in

    для того, чтобы делалось быстро, заведите индексированное вычисляемое поле со значением разности

    >> Добавить водителю с заданной фамилией два автомобиля

    insert auto (pers_id, марка_машины, цвет, госномер)
    select idd, марка_машины, цвет, госномер
    from personnel, машины
    where family = 'Skamejkin' and машины.машина_id in (@id1, @id2)

  4. 4
    Василий Рейсер ответил:

    А что такое @id1, @id2?

  5. 5
    Леонид Максимов ответил:

    переменные с идентификаторами машин.

  6. 6
    Василий Рейсер ответил:

    Тоесть?

  7. 7
    Леонид Максимов ответил:

    declare @id1 int, @id2 int
    select @id1=2345, @id2 = 46232
    select @id1, @id2

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.