Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / First и Last в запросе по запросу / 17 сообщений из 17, страница 1 из 1
16.07.2018, 11:42
    #39674422
MikeLed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
First и Last в запросе по запросу
Есть 2 хранимых запроса
1. Q1:
Код: vbnet
1.
SELECT f1, f2, fDateTime, fCode FROM t1 WHERE fCode<>"" ORDER BY fCode, fDateTime


fDateTime– дата и время.
Возвращает все как положено и данные и сортировку

2. Q2:
Код: vbnet
1.
SELECT fCode, First(f1) AS f01, Last(f2) AS f02, Count(fCode) AS [CountFR] FROM Q1 GROUP BY fCode ORDER BY fCode



First и Last возвращают не то, что должны (т.е. не то что видно по результатам запроса Q1).

И очень похоже, что убирая сортировку в Q1, в Q2 я получаю тот же резутьтат.
Как такое может быть?
...
Рейтинг: 0 / 0
16.07.2018, 11:53
    #39674424
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
First и Last в запросе по запросу
MikeLedFirst и Last возвращают не то, что должны (т.е. не то что видно по результатам запроса Q1).Правильно. Q2 имеет собственную сортировку, и именно согласно ей и будут выбираться First/Last значения. И в данном конкретном случае сортировка в Q1 вообще лишняя - она будет проигнорирована (и, возможно, вообще не будет выполняться, поскольку будет вырезана построителем плана выполнения) в Q2.
...
Рейтинг: 0 / 0
16.07.2018, 11:56
    #39674427
MikeLed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
First и Last в запросе по запросу
Akina,

Получается, что нужный результат я могу получить только создав временную таблицу?
...
Рейтинг: 0 / 0
16.07.2018, 12:56
    #39674455
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
First и Last в запросе по запросу
Никто не знает, что есть для Вас "нужный результат".

Вы лучше сформулируйте задачу, а не то, как Вы хотели бы её решать.
...
Рейтинг: 0 / 0
16.07.2018, 13:04
    #39674457
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
First и Last в запросе по запросу
MikeLedAkina,

Получается, что нужный результат я могу получить только создав временную таблицу?
Аа что такое FCODE
я бы подумала, что счетчик
Код: sql
1.
2.
3.
4.
SELECT fCode,
 First(f1) AS f01, Last(f2) AS f02, Count(fCode) AS [CountFR]
 FROM Q1
 GROUP BY fCode ORDER BY fCode
...
Рейтинг: 0 / 0
16.07.2018, 13:05
    #39674458
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
First и Last в запросе по запросу
MikeLed,
стесняюсь спросить-а какой именно (нельзя получить два результата в одном запросе)результат Вы хотите получить,зачем нужен первый запрос?
...
Рейтинг: 0 / 0
16.07.2018, 13:16
    #39674460
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
First и Last в запросе по запросу
Народ!
Скажите,если в запросе не задана сортировка, всегда-ли(по умолчанию)происходит сортировка по GROUP BY?
...
Рейтинг: 0 / 0
16.07.2018, 13:34
    #39674472
Лапух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
First и Last в запросе по запросу
MikeLed...Есть 2 хранимых запроса
1. Q1:
...
Да что бы ваших детей так в детском саду и школе называли - Р1 и Р2 ... ( Ребёнок1, Ребенок2... ), как вы безлично обзываете свои детища во время творения запросов.
Пацифист-Пофигист наверное , ибо в армию идти не хочет.
...
Рейтинг: 0 / 0
16.07.2018, 14:23
    #39674507
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
First и Last в запросе по запросу
sdkuесли в запросе не задана сортировка, всегда-ли(по умолчанию)происходит сортировка по GROUP BY?Нет, это не MySQL...
...
Рейтинг: 0 / 0
16.07.2018, 15:00
    #39674535
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
First и Last в запросе по запросу
Я понял так:Вы хотите для каждой группы видеть первую и последнюю запись в группе
Это решается подчиненным запросом (почитайте HTLP)-примерно так:
создаете запрос(это,как понял,затруднений не вызывает) в котором отображаете первую запись в группе+вычисляемое поле с подчиненным запросом (примерно такой):
(SELECT TOP 1 нужноеВамПоле FROM таблица AS t1 WHERE таблица.полеПоКоторомуГруппируетеВглавномЗапросе=t1.этоЖеПоле GROUP BY нужноеВамПоле ORDER BY ОноЖе DESC) в строке групповых операций выбираете: "выражение"
...
Рейтинг: 0 / 0
16.07.2018, 15:03
    #39674537
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
First и Last в запросе по запросу
sdku,
очепятка: HELP а не HTLP
...
Рейтинг: 0 / 0
16.07.2018, 15:29
    #39674551
MikeLed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
First и Last в запросе по запросу
ПЕНСИОНЕРКА,

Нет не счетчик - некий объединяющий код, полученный в результате ряда операций по определенной логике.

sdku ,

Первый запрос - это отсортированный список
Второй группирование, в котором хочется видеть и первое занчение поля f1 и последнее значение поля f2

sdku

Я хочу видеть записи группы со значениями первой записи в одно поле и последней записи в другом поле
Формально видеть надо список групп и список записей в группе (подч. форма или подтаблица)

Думал, что используя отсортированный данные в запросе Q1, как источник для запроса Q2. получу желаемое.
...
Рейтинг: 0 / 0
16.07.2018, 16:35
    #39674592
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
First и Last в запросе по запросу
MikeLed,
...
Рейтинг: 0 / 0
17.07.2018, 11:14
    #39674899
MikeLed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
First и Last в запросе по запросу
sdku,

По такому примеру вопросов нет.
Но в запросе сортировка д.б. по другому полю (не first), т.е. еще один подзапрос.
И сколько такой запрос ( 3 в одном) на 200000 записей будет выполняться?

Я поня, что first и lаst в запросах, где источником является друго запрос надо использовать с осторожностью, если вообще стоит это делать :)/
...
Рейтинг: 0 / 0
17.07.2018, 12:29
    #39674953
First и Last в запросе по запросу
Можно попробовать так:
Сначала создать запрос вида
Код: sql
1.
SELECT fCode, Min(fDateTime) AS DateMin, Max(fDateTime) AS DateMax, Count(fCode) AS [CountFR] FROM t1 GROUP BY fCode

А затем строите еще один на этом запросе и двух экземплярах таблицы, связанных с запросом LEFT JOIN по паре полей fCode, DateMin первый экземпляр и fCode, DateMax - второй.

Если результат устраивает, то всё можно собрать в одном запросе.
...
Рейтинг: 0 / 0
17.07.2018, 13:29
    #39675018
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
First и Last в запросе по запросу
MikeLedsdku,

По такому примеру вопросов нет.
Но в запросе сортировка д.б. по другому полю (не first), т.е. еще один подзапрос.
И сколько такой запрос ( 3 в одном) на 200000 записей будет выполняться?

Я поня, что first и lаst в запросах, где источником является друго запрос надо использовать с осторожностью, если вообще стоит это делать :)/Вы бы выложили БД с четким объяснением Ваших "хотелок" и получили бы конкретный ответ-заниматься "вангованием" нет желания.
(хоча глянуть схему БД)
...
Рейтинг: 0 / 0
18.07.2018, 08:12
    #39675398
MikeLed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
First и Last в запросе по запросу
sdku, Кривцов Анатолий .

В принципе ответ на свой вопрос я получил от Akina, за что и спасибо.
Я просто повторю то, как он звучал:
"First и Last возвращают не то, что должны (т.е. не то что видно по результатам запроса Q1).
И очень похоже, что убирая сортировку в Q1, в Q2 я получаю тот же резутьтат.
Как такое может быть? "

Но постепенно свалились в решение задачи.
Min/Max меня бы спас, но не для этих полей.
Я уже неоднократно убеждался, что в некоторых случаях запрос в запросе в разы медленнее, чем использование временной таблицы.
Тем более если база расположена на сетевом ресурсе.
Получается, что по сети я гоню данные один раз, а не три или больше (от количества запросов) и далее локально работаю с меньшим объемом.
Поэтому первый запрос будет INSERT во вр. табл. T1, а второй будет брать данные из T1.
И все получается так, как надо.

Всем спасибо.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / First и Last в запросе по запросу / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]