Last перестал работать sos

minni_m
Дата: 26.09.2005 17:48:37
Есть запрос :
SELECT [qDaten_Pdaten].[ADRNR1], [qDaten_Pdaten].NAME, [qDaten_Pdaten].[VORNAME], [qDaten_Pdaten].[KLASSIFIKA], Last([qStandDossier_BO].t_StandDossier_BO.Standdossier) AS StandDossierBO, Last([qStandDossier_BO].[Datum_eintrag]) AS Datum_eintragBO, Last([qStandDossier_BO].[SB_eintrag]) AS SB_BO, Last([qStandDossier_BO].[BriefArt]) AS Brief_BO, Last([qStandDossier_BO].[Datum_erledigen]) AS Datum_erledigen_BO, Last([qStandDossier_BO].[SB_erledigen]) AS SB_erledigen_BO, Last([qStandDossier_BO].[Erledigt]) AS Erledigt_BO, Last([qStandDossier_FO].t_StandDossier_FO.Standdossier) AS StandDossierFO, Last([qStandDossier_FO].[Datum_eintrag]) AS Datum_eintragFO, Last([qStandDossier_FO].[SB_eintrag]) AS SB_FO, Last([qStandDossier_FO].[Datum_erledigen]) AS Datum_erledigen_FO, Last([qStandDossier_FO].[SB_erledigen]) AS SB_erledigen_FO, Last([qStandDossier_FO].[Erledigt]) AS Erledigt_FO, [qDaten_Pdaten].DATEN.ADRNR
FROM (qDaten_Pdaten LEFT JOIN qStandDossier_BO ON [qDaten_Pdaten].[ADRNR1]=[qStandDossier_BO].[DossierNr]) LEFT JOIN qStandDossier_FO ON [qDaten_Pdaten].[ADRNR1]=[qStandDossier_FO].[DossierNr]
GROUP BY [qDaten_Pdaten].[ADRNR1], [qDaten_Pdaten].[NAME], [qDaten_Pdaten].[VORNAME], [qDaten_Pdaten].[KLASSIFIKA], [qDaten_Pdaten].[Aktiv_flag]
HAVING (((qDaten_Pdaten.Aktiv_flag)=True))
ORDER BY [qDaten_Pdaten].NAME, [qDaten_Pdaten].[VORNAME];

он вытаскивает из подзапросов последние записи. внезапно стал показывать НЕ последние, а какие попало... Менять ничего не менялось... Что делать????
Iskander68
Дата: 26.09.2005 18:04:34

Попробуй замени его на Max

--
Regards
Alexander Artamonov


Posted via ActualForum NNTP Server 1.3

minni_m
Дата: 26.09.2005 18:26:37
Тогда вообще фигня получается
Iskander68

Попробуй замени его на Max
Iskander68
Дата: 26.09.2005 18:39:36

Фигня в смысле не те даты, которые ты ожидал? Попробуй, выбери только
поля, для которых нужны Last/Max и выполни по ним селект - с Last и Max.
Кстати, не лучше ли вынести Aktiv_flag = True в условие Where, чтобы
сначала ограничить выборку, а потом совершать над ней групповые операции.
Опять же кстати,

Дополнительные сведения
Функции First и Last могут рассматриваться как аналоги методов
MoveFirst и MoveLast объекта доступа к данным (DAO) Recordset. Они
возвращают значение указанного поля, находящееся соответственно в первой
или последней записях результирующего набора запроса. Поскольку записи
обычно возвращаются без какого-либо специального порядка (кроме случаев,
когда запрос содержит предложение ORDER BY), эти функции возвращают
случайные записи.


--
Regards
Alexander Artamonov


"minni_m" <nospam@sql.ru> сообщил/сообщила в новостях следующее:
news:1911387@sql.ru...
Тогда вообще фигня получается
Iskander68

Попробуй замени его на Max


Тема Ответить

Posted via ActualForum NNTP Server 1.3

Тяп-ляп
Дата: 26.09.2005 18:40:40
Из справки аксесса:

Функции First, Last
.......................................
Дополнительные сведения
Функции First и Last могут рассматриваться как аналоги методов MoveFirst и MoveLast объекта доступа к данным (DAO) Recordset. Они возвращают значение указанного поля, находящееся соответственно в первой или последней записях результирующего набора запроса. Поскольку записи обычно возвращаются без какого-либо специального порядка (кроме случаев, когда запрос содержит предложение ORDER BY), эти функции возвращают случайные записи.

Подзапросы qStandDossier_BO и qStandDossier_FO имеют сортировку, соответствующую твоим ожиданиям?

SELECT [qDaten_Pdaten].[ADRNR1], [qDaten_Pdaten].NAME, [qDaten_Pdaten].[VORNAME], [qDaten_Pdaten].[KLASSIFIKA], Last([qStandDossier_BO].t_StandDossier_BO.Standdossier) AS StandDossierBO,

А вот это что за синтаксис? Имя поля из трех частей?
4321
Дата: 26.09.2005 18:50:49
minni_m
внезапно стал показывать НЕ последние, а какие попало... Менять ничего не менялось...
В кач-ве предположения о внезапности и неменяемости -
возможно в qDaten_Pdaten пропал DISTINCT или признак "статический набор", без которого ласт обычно ведет себя как хочет. (ивабще)
minni_m
Дата: 26.09.2005 18:55:36
Iskander68

Фигня в смысле не те даты, которые ты ожидал? Попробуй, выбери только
поля, для которых нужны Last/Max и выполни по ним селект - с Last и Max.
выдает последнюю дату и произвольные значения ост. полей!

Iskander68

Кстати, не лучше ли вынести Aktiv_flag = True в условие Where, чтобы
сначала ограничить выборку, а потом совершать над ней групповые операции.
Пардон, а какая разница. не могу же я на каждый чих запросы сохранять. нужны все активные кандидаты и, если есть, последняя запись из протокола по дате. поэтому и делаю все сразу.
4321
Дата: 26.09.2005 18:57:54
4321
minni_m
внезапно стал показывать НЕ последние, а какие попало... Менять ничего не менялось...
В кач-ве предположения о внезапности и неменяемости -
возможно в qDaten_Pdaten пропал DISTINCT или признак "статический набор", без которого ласт обычно ведет себя как хочет. (ивабще)
верхоглядствую. - во всех, от которых берется ласт - в т.ч. и qStandDossier_FO желательны дистинкты, но лучше чуть иначе -

всеж ласт несколько капризен, и согласно уточненным данным работать сыршенно не обязан. Поэтому сначала берется весь (предгруппировочный) запрос, сортируется, берется от него дистинкт, а уж от последнего - отклеиваются ласты в требуемом количестве. Вроде как при таких бубнах ласт на чела начинает смахивать (но это на собственный страх и риск разработчика - ибо уточнения про нерабочесть ласта кажеца никто не отменял, но тесты показывают, что с дистинктом в исходном наборе ласт таки неплохо работает)
4321
Дата: 26.09.2005 19:02:09
minni_m
Iskander68

Кстати, не лучше ли вынести Aktiv_flag = True в условие Where, чтобы
сначала ограничить выборку, а потом совершать над ней групповые операции.
Пардон, а какая разница. не могу же я на каждый чих запросы сохранять. нужны все активные кандидаты и, если есть, последняя запись из протокола по дате. поэтому и делаю все сразу.
ДУМАЕЦА ИМЕЛОСЬ ВВИДУ НЕ сохранение запроса с WHERE, а правильные приоритеты в условиях выбора.
А именно - то что можно - переносится в предложение WHERE, которое автоматом проверяется до группировки, всё что нельзя остается в HAVING того же запроса.
minni_m
Дата: 26.09.2005 19:04:50
4321
minni_m
внезапно стал показывать НЕ последние, а какие попало... Менять ничего не менялось...
В кач-ве предположения о внезапности и неменяемости -
возможно в qDaten_Pdaten пропал DISTINCT или признак "статический набор", без которого ласт обычно ведет себя как хочет. (ивабще)

Стояло DISTINCTROW поменяла на DISTINCT - бэз изменений. но не покидает ощущение что где-то что-то тайно поменялось - всяко извращаюсь уже часа 2 и никак!!