| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS SQL Server > Отбор последних внесенных записей |
| Автор: Ptica 20.12.2004, 16:18 |
| Господа! Подскажите, как составить SQL-запрос. Задача приблизительно следующая. Есть таблица с бухгалтерскими проводками. Для каждой проводки есть код поставщика. Поставщиков много. По каждому поставщику есть множество проводок. Необходимо составить запрос так, чтобы его результат включал по одной записи для каждого поставщика, причем это должны быть записи проводок, внесенные последними. Например, по поставщику 001 были проводки в среду, четверг и пятницу, так вот в результат запроса должна попасть только пятничная проводка. А по поставщику 567 единственная проводка была год назад, и она тоже должна войти в запрос, как "последняя для данного поставщика". При определении "последнести" проводки решающую роль играет хронология физического внесения записей (сортировка идет по коду поставщика, а затем по автоинкрементному полю). Можно ли обойтись одним запросом, без организации циклов, промежуточных таблиц и т.д.? |
| Автор: AntonSaburov 20.12.2004, 16:22 |
| Так через MAX() и в условии поставить HAVING - разве не получиться ? |
| Автор: boevik 20.12.2004, 16:30 |
| Ptica, скорее всего запрос в запросе поможет решить проблему. Внутрений запрос, что б найти max для каждого поставщика, внешний - выдать проводку. Для более детального обсуждение, требуется структура таблицы. |
| Автор: Akina 20.12.2004, 16:38 |
| Не понимаю... если дата/время коррекции - критична, то почему в структуре нет даты/времени внесения коррекции записи? |
| Автор: Ptica 20.12.2004, 17:41 | ||||
В общем, вот к чему я пока пришел:
Если есть что-то лучшее, предлагайте! Для простоты можно считать, что структура базы такая:
Akina Вопрос правомерен. Просто я по ряду причин посчитал для себя удобным иметь в структуре автоинкрементное поле, а дату/время внесения записей пока не использовал, хотя ее тоже, наверное, неплохо бы иметь... я подумаю. |
| Автор: boevik 20.12.2004, 17:48 | ||||||
На это я и намекал. Можно ещё такой запрос:
Но не уверен, что он лучше твоего |
| Автор: Akina 20.12.2004, 18:01 | ||
Ptica
Мало того что наличие и того, и другого поля не противоречит логике - оно вполне уместно. Автоинкремент ака счетчик - ключевое поле, а дата/время коррекции - информационное. Причем в твоем случае оно содержит значимые данные. |
| Автор: Ptica 21.12.2004, 09:49 |
| Спасибо всем откликнувшимся! |