|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
Добрый день, форумчане! У меня возникла очень-очень серьезная проблема с БД. Есть две таблицы excel, связанные с запросами в access. они обе привязаны друг-к-другу. Необходимо выбрать по полю [дата] последние значения. Более подробно исходные данные: таблица 1: проект уровень дата CRM 2 19.04.2012 CRM 3 15.07.2013 BPM 3 12.03.2013 ERP 2 01.01.2012 Таблица 2: проект владелец CRM Иванов BPM Сидоров ERP Кузнецов Таблица 1 связана с Таблицей 2 по полю проект со связью один-ко-многим. В настоящее время, в аксесе, чтобы выделить "последние значения" делал следующее: включал групповые операции и выводил следующие столбики таблица1.проект таблица1.уровень таблица1.дата таблица2.владелец группировка last last группировка ДО сегодняшнего дня думал что эти два last'а выберут самые последние значения по дате, но переставив строчку CRM местами неприятно удивился, когда дату мне вывело последнюю, а уровень 2. После этого подумал использовать функцию max, но проблема, что уровень может как повыситься, так и понизиться. Пожалуйста, посоветуйте как по last(дата) вывести все остальные строчки? p.s. надеюсь понятно написал, я честно скажу, не спец... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 20:14 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
Три раза раза перечитал , но ничего не понял. А почему бы Вам не отсортировать записи по полю дата о братном порядке, и выбрать столько записей сколько нужно. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 20:44 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
D>B, Фигня что экселевский файлик ведется отдельно одними людьми, а запросы выполняются другими в другой файл-отчет. Я более глазуально представлю информацию - в картинках ниже. таблица1 http://funkyimg.com/i/DsxQ.png таблица2 http://funkyimg.com/i/DsxR.png как я делал запрос (неверно) http://funkyimg.com/i/DsxS.png что он выводил (не то) http://funkyimg.com/i/DsxT.png Необходимо, чтобы по проекту CRM он выводил уровень 4, т.к. дата там самая последняя. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 20:51 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
telefon2007думал что эти два last'а выберут самые последние значения по датеГлупость ты думал. Что такое, по-твоему, last? Это последняя запись в порядке, в указанном в order by. Не самая большая, не сама маленькая. Просто значение в последней по счёту записи группы. Поскольку ты не указал сортировки, порядок записей в группе в общем отфонарный. В большинстве случаев (но далеко не всегда) это - в порядке возрастания первичного ключа. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 20:53 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
Akina, ну вот это я сейчас и судорожно понял, что думал-то и неправильно. Поэтому интересуюсь, как вывести значения (строчки - или как она правильно называется) на последнюю дату? буду просто нереально благодарен... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 20:57 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
telefon2007, Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 21:02 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
qwerty112, отрабатывает отлично, только в режим конструктора не дает вернуться. Нет ли возможности как-то забить столь хитрый запрос через конструктор? :) p.s. спасибо большое тем не менее!) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 21:07 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
telefon2007как вывести значения (строчки - или как она правильно называется) на последнюю дату?Не последнюю, а максимальную. Озаботьтесь всё-таки прочитать описания тех групповых функций, которые пытаетесь использовать с закрытыми глазами. Далее проделайте следующее. Этап 1. Вам нужна эта самая максимальная дата для каждого проекта. Создайте новый запрос. Добавьте туда таблицу данных. Включите групповые операции. Добавьте для вывода два поля. Поле Проект - для него включите группировку. Поле Дата - для него включите групповую операцию Max() - получение максимального значения. Просмотрите результат... и сохраните этот запрос. Скажем, с именем Запрос1. Этап 2. Нужно получить записи, в которых содержатся значения из построенного ранее запроса. Создайте новый запрос. Добавьте туда таблицу данных и только что созданный запрос. Укажите соответствия полей - т.е. мышом перетащите поле имени проекта из таблицы в запрос (или наоборот) - они должны соединиться линией. То же проделайте и с полем даты (у него в запросе, правда, немного иное имя, но это не страшно). Добавьте в поля вывода все поля из таблицы данных. Просмотрите результат. Должно получиться то, что нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 21:11 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
telefon2007qwerty112, отрабатывает отлично, только в режим конструктора не дает вернуться. чевой-то ? и что "говорит" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 21:11 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
qwerty112, ан нет, заработал конструктор после замены первых двух строчек select таблица1.проект, таблица1.уровень, таблица1.дата, таблица2.владелец from таблица1 inner join таблица2 on таблица1.проект=таблица2.проект на SELECT таблица1.Проект, таблица1.уровень, таблица1.Дата, таблица2.Владелец FROM таблица1 LEFT JOIN таблица2 ON таблица1.Проект = таблица2.Проект (почему так - без понятия) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 21:16 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
Akina, Спасибо, до такого варианта сам дошел, но как-то он выглядит некрасиво. Простейшую операцию выполнять в два присяда. Хочется чтобы без вложенных запросов и в один заход, но, к сожалению, кажется такого не возможно. Тем не менее, спасибо всем за помощь! буду курить как отрабатывает эта хитрость: WHERE (((Exists (select 1 from таблица1 t where таблица1.проект=t.проект and таблица1.дата<t.дата))=False)); ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 21:18 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
telefon2007Хочется чтобы без вложенных запросов А решение qwerty112 без них, по-твоему? telefon2007и в один заходГовно вопрос, собери два полученных запроса в один. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 21:22 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
telefon2007 Простейшую операцию выполнять в два присяда. Хочется чтобы без вложенных запросов и в один заход, но, к сожалению, кажется такого не возможно. без вложенного запроса так можна Код: sql 1. 2. 3. 4.
но этот - точно в конструкторе не откроется ... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 21:27 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
qwerty112, Akina, Спасибо Вам всем, ребята! В общем, пришел к выводу, что на тот момент, пока мои знания не поднимутся до уровня qwerty112 - буду пользоваться системой "миллион запросов" - которую предложил пользователь Akina. Выражаю огромную благодарность за то, что просто показали мне, что либо ты хорошо знаешь SQL и не_пользуешься конструктором - делаешь быстро и четко либо ты делаешь конструктором, но с кучей "вспомогательных" запросов :)8 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 22:04 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
telefon2007либо ты делаешь конструктором, но с кучей "вспомогательных" запросов Урок номер два. У тебя имеется два ранее созданных запроса. Запрос1 и Запрос2. Открой конструктор Запроса1. Переключи его в режим SQL. Скопируй весь его текст, кроме последнего символа (точки с запятой). Открой конструктор Запроса2. Переключи его в режим SQL. Найди секцию FROM, а в ней - упоминание запроса Запрос1. Допиши перед ним несколько символов, чтобы получилось () AS Запрос1 Поставь курсор внутрь скобок. Вставь туда из буфера обмена текст перовго запроса. Сохрани полученный текст с именем Запрос3. Удали первые два запроса. Убедись, что одиночный запрос работает и даёт верные результаты. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2013, 22:40 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
telefon2007буду пользоваться системой "миллион запросов" - которую предложил пользователь Akina. Запросы с подзапросами , или система "миллион запросов" как Вы ее называете , который предложил Akina еще не означает , что этот вариант хуже того что предложил qwerty112 . Запросы с подзапросами иногда могут выполняться и быстрее , чем вариант с множествами джойнов с условиями. Так что всегда нужно выбирать оптимальный вариант. P.S А вот для того чтобы подняться до уровня qwerty112 нужно мучиться долго и упорно. )) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2013, 08:27 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
Ребят, а хотел бы еще один вопрос спросить. Реализовал решение выше через дополнительный запрос, который отбирает max(дата) и привязал полученный запрос по процессу и дате к таблице1. Хочется еще, чтобы в начале выводился порядковый номер строки. В интернете нашел запрос. Попытался его под себя передалть, но вываливает ошибку. "не удалось найти имя <имя> из этого выражения" Как выглядит запрос в конструкторе: DCount("[вспомог_таблица].[проект]"; "[вспомог_таблица]";"[вспомог_таблица].[проект]<=" & [вспомог_таблица].[проект].[процесс]) Может кто знает, что стоит переделать в запросе или знает о существовании какой-нибудь очевидной функции типо RowNumber? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2013, 11:19 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
См. ФАК про счетчики ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2013, 13:25 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
А можно тему поднять? У меня запрос конечно с двумя таблицами, но не работает именно выборка по последней дате, подскажите, что делать, пожалуйста. Код: plsql 1. 2. 3.
И проблема еще в том, что у меня на один день может приходиться несколько записей, как выбрать именно последнюю? Хотя, до этого и не доходит, у меня выпадают записи по непонятному принципу, они вроде бы и не все, но явно не отбирается последняя дата. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2017, 11:36 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
Решение по последним датам нашел: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
А как теперь быть, если по дате несколько комментариев, а мне нужен последний? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2017, 14:46 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
Stang, а что мешает добавить еще одно поле в таблицу,сделать его скрытым на форме и писать в него,при сохранении записи, now в запросе TOP 1 с order by desc по этому полю выведет последнюю запись ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2017, 16:55 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
sdku, для этого надо менять структуру. Да и проблема в том, что в основном эти данные подтягиваю с Excel. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 11:46 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
В принципе, я поступил так, все равно это у меня подчиненный запрос, а в основном по связи один-к-одному у меня и выпадает одна запись. Правда, по какому принципу еще не разобрался, но там это не глобально страшно, в один день статус резко измениться не может. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.10.2017, 12:01 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
Stang, Нашел пробел в своем решении, если к записи нет комментария, то она вообще выпадает.... Как бороться? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2017, 11:29 |
|
Выборка последних значений в access
|
|||
---|---|---|---|
#18+
Добрый день, у меня похожая проблема имеется таблица Код региона | ФИО | ИНН | Дата регистрации 1020 |Петров | 123 | 04,10,2017 1020 |Петров | 123 | 10,08,2014 1030 |Сидоров| 321 | 09,01,2012 1030 |Сидоров| 311 | 12,11,2017 Все данные в таблице а именно ФИО и ИНН дублируются но при этом у них могут меняться регионы и дата регистрации как мне вывести 1 запись по каждому ФИО с самой последней датой? (Для петрова это 04,10,2017; Для Сидорова 12,11,2017) Буду очень благодарен!! PS: Если убираю с таблицы столбец с регионом то все работает как надо через фун. min-max на дате но при наличии региона выдает дату на каждый регион. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2018, 13:38 |
|
|
start [/forum/topic.php?fid=45&msg=38408357&tid=1611824]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 155ms |
0 / 0 |