|   |   | 
| 
 | Из списка доков выбрать запросом максимальный по дате | ☑ | ||
|---|---|---|---|---|
| 0
    
        evorle145 26.11.14✎ 10:52 | 
        Есть таблица доков:
 НомерДока ДатаДока РеквизитНоменклатура (1) 000001 01.01.2013 яблоко (2) 000002 01.01.2014 яблоко (3) 000003 01.01.2014 яблоко Вопрос как запросом из этого списка доков получить (2) или (3) строку?(то есть максимальный по дате документ и его номер) Делаю так: ВЫБРАТЬ Рецептура.Номенклатура, Рецептура.Дата КАК Дата, Рецептура.Номер ПОМЕСТИТЬ Рецептуры ИЗ Документ.Рецептура КАК Рецептура ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ МАКСИМУМ(Рецептура.Дата) КАК Дата, Рецептура.Номенклатура КАК Номенклатура ИЗ Документ.Рецептура КАК Рецептура СГРУППИРОВАТЬ ПО Рецептура.Номенклатура) КАК ВложенныйЗапрос ПО Рецептура.Дата = ВложенныйЗапрос.Дата Но такой запрос мне вернет и (2) и (3) строку, а мне надо получить либо (2) либо (3), чтобы дальше полученный результат использовать в соединении с другими таблицами.. | |||
| 1
    
        DCKiller 26.11.14✎ 10:57 | 
        ВЫБРАТЬ
 Рецептура.Номенклатура, ВложЗапрос.Дата ИЗ Документ.Рецептура КАК Рецептура ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ МАКСИМУМ(Рецептура.Дата) КАК Дата ИЗ Документ.Рецептура КАК Рецептура) ПО ИСТИНА | |||
| 2
    
        Ёпрст гуру 26.11.14✎ 10:57 | 
        (0) ну выбери Максимум(НомерДок) ... будет у тебя 1 строка.     | |||
| 3
    
        evorle145 26.11.14✎ 11:03 | 
        (1) , спасибо, но боюсь, что левым соединением я получу все строки, а не те, у которых макс дата.
 походу (2) дал мне правильный совет... Сам не понимаю, почему мне это в голову не пришло, спасибо! | |||
| 4
    
        Cube 26.11.14✎ 11:05 | 
        (3) Веселуха начнется, когда ты начнешь собирать документы с декабря 2014 по январь 2015... С нового года-то нусерация с 1 начнется...     | |||
| 5
    
        Cube 26.11.14✎ 11:05 | 
        (4) "нусерация" = "нумерация" :)     | |||
| 6
    
        zulu_mix 26.11.14✎ 11:06 | 
        лучше +максимум(ссылка)
 тогда гарантировано выберешь самый последний документ | |||
| 7
    
        Cube 26.11.14✎ 11:10 | 
        (6) Не факт:
 Если я создам документ от 26.11.2014 и запишу, а потом создам документ от 01.11.2014 и запишу, то Максимум(Ссылка) мне выдаст документ от 01.11.2014, верно? :) | |||
| 8
    
        evorle145 26.11.14✎ 11:10 | 
        (4)  не понял... ведь при внутреннем соединении я уже получу документы с максимальной одинаковой датой, а уж потом буду брать максимум по номеру.. то есть доки 2014 и 2015 никак вроде не пересекаются...     | |||
| 9
    
        evorle145 26.11.14✎ 11:11 | 
        ВЫБРАТЬ
 Рецептура.Номенклатура, Рецептура.Дата КАК Дата, МАКСИМУМ(Рецептура.Номер) КАК Номер ПОМЕСТИТЬ Рецептуры ИЗ Документ.Рецептура КАК Рецептура ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ МАКСИМУМ(Рецептура.Дата) КАК Дата, Рецептура.Номенклатура КАК Номенклатура ИЗ Документ.Рецептура КАК Рецептура СГРУППИРОВАТЬ ПО Рецептура.Номенклатура) КАК ВложенныйЗапрос ПО Рецептура.Дата = ВложенныйЗапрос.Дата СГРУППИРОВАТЬ ПО Рецептура.Номенклатура, Рецептура.Дата, Разве так не взлетит? | |||
| 10
    
        zulu_mix 26.11.14✎ 11:12 | 
        (7) верно. но если у тебя за один день несколько документов с одинаковой датой, то максимум(ссылка) выдаст тебе последний физически введенный в этот день документ.
 и потом. я же написал +максимум | |||
| 11
    
        zulu_mix 26.11.14✎ 11:13 | 
        (9)         МАКСИМУМ(Рецептура.Номер) КАК Номер замени на МАКСИМУМ(Рецептура.ссылка) КАК док     | |||
| 12
    
        Kamas 26.11.14✎ 11:18 | 
        а чем не нравится выбрать ПЕРВЫЕ 1
 УПОРЯДОЧИТЬ ПО Дата УБЫВ | |||
| 13
    
        evorle145 26.11.14✎ 11:21 | 
        (11) , понял, спасибо! 
 (12), так я так получу только 1 рецептуру с максимальной датой, а вообще рецептур то много...(в примере только яблоки , но есть еще груши) | |||
| 14
    
        Kamas 26.11.14✎ 11:24 | 
        (13) а ну если есть еще и груши     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |