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: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:57:54
4321 |
minni_m | внезапно стал показывать НЕ последние, а какие попало... Менять ничего не менялось... | В кач-ве предположения о внезапности и неменяемости - возможно в qDaten_Pdaten пропал DISTINCT или признак "статический набор", без которого ласт обычно ведет себя как хочет. (ивабще) |
верхоглядствую. - во всех, от которых берется ласт - в т.ч. и qStandDossier_FO желательны дистинкты, но лучше чуть иначе -
всеж ласт несколько капризен, и согласно уточненным данным работать сыршенно не обязан. Поэтому сначала берется весь (предгруппировочный) запрос, сортируется, берется от него дистинкт, а уж от последнего - отклеиваются ласты в требуемом количестве. Вроде как при таких бубнах ласт на чела начинает смахивать (но это на собственный страх и риск разработчика - ибо уточнения про нерабочесть ласта кажеца никто не отменял, но тесты показывают, что с дистинктом в исходном наборе ласт таки неплохо работает)