Помогите с запросом

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
shahmatist
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 09.03.2006 (Чт) 0:01
Откуда: Волгоград

Помогите с запросом

Сообщение shahmatist » 18.12.2010 (Сб) 19:02

Есть таблица, к примеру dvig, поля instrument_id, data, vid, sotrudnik_id. (хранение перемещений инструментов в разрезе самих инструментов и сотрудников). Необходимо получить результат, с группировкой по инструменту и указанием даты, вида и сотрудника последнего перемещения. (инструмент, дата последнего перемещения по этому инструменту, сотрудник этого перемещения и вид перемещения).
Пробовал так:
Код: Выделить всё
SELECT tabl.instrument_id, FIRST(tabl.data), FIRST(tabl.vid), FIRST(tabl.sotrudnik_id) FROM (SELECT dvig.instrument_id, dvig.data, dvig.vid, dvig.sotrudnik_id FROM dvig ORDER BY data DESC) AS tabl GROUP BY tabl.instrument_id")

Применение DESC результата не дает никакого. Видимо в данном случае выбирается первая запись физически находящаяся в таблице. Но мне не нужна первая из таблицы. Мне нужна первая (точнее последняя) из запроса. Скажите пожалуйста, как это сделать и чего я не понял?

[Хакер] :: Тема размещена в неправильном разделе. Перенесено из «Visual Basic 1-6» в «Базы данных».
Последний раз редактировалось shahmatist 19.12.2010 (Вс) 10:29, всего редактировалось 1 раз.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Помогите с запросом

Сообщение alibek » 18.12.2010 (Сб) 22:29

Используй не FIRST, и даже не LAST, а MAX по дате.
Lasciate ogni speranza, voi ch'entrate.

shahmatist
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 09.03.2006 (Чт) 0:01
Откуда: Волгоград

Re: Помогите с запросом

Сообщение shahmatist » 18.12.2010 (Сб) 22:52

А как тогда обращаться к sotrudnik_id?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Помогите с запросом

Сообщение alibek » 18.12.2010 (Сб) 23:19

Подзапросом, where date = max(date)
Lasciate ogni speranza, voi ch'entrate.

shahmatist
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 09.03.2006 (Чт) 0:01
Откуда: Волгоград

Re: Помогите с запросом

Сообщение shahmatist » 19.12.2010 (Вс) 10:27

Я в принципе думал над этим. Но проблема возникает, если на эту дату было несколько движений по инструменту.

SLIM
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1840
Зарегистрирован: 04.04.2008 (Пт) 18:21
Откуда: Краснодар

Re: Помогите с запросом

Сообщение SLIM » 19.12.2010 (Вс) 11:14

Нужен соотнесенный подзапрос я думаю.
Пишите жизнь на чистовик.....переписать не удастся.....

shahmatist
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 09.03.2006 (Чт) 0:01
Откуда: Волгоград

Re: Помогите с запросом

Сообщение shahmatist » 19.12.2010 (Вс) 11:40

А можно подробнее немного? Соотнесенный подзапрос это что?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Помогите с запросом

Сообщение alibek » 20.12.2010 (Пн) 9:11

shahmatist писал(а):Я в принципе думал над этим. Но проблема возникает, если на эту дату было несколько движений по инструменту.

И что с того?
Если у нескольких движений могут быть одинаковыми дата и время, значит поставленная задача (показать последнее по дате перемещение) бессмысленна.
Добавляй поле с порядковым номером перемещения. Или фиксируй дату перемещения с такой точностью, чтобы повторений не было.
Lasciate ogni speranza, voi ch'entrate.

shahmatist
Новичок
Новичок
 
Сообщения: 27
Зарегистрирован: 09.03.2006 (Чт) 0:01
Откуда: Волгоград

Re: Помогите с запросом

Сообщение shahmatist » 20.12.2010 (Пн) 10:16

спасибо за помощь.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList