powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите написать запрос
21 сообщений из 21, страница 1 из 1
Помогите написать запрос
    #39893381
Katy_2108
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица в Access, а в ней столбец с датами, но в формате текст, поэтому встречаются некорректные даты

SELECT CDate(Report_table.date_) AS Выражение1, Report_table.date_
FROM Report_table

некорректные даты вижу, но мне надо, чтобы запрос выводил только некорректные даты, помогите, пожалуйста
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39893394
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Katy_2108
Есть таблица в Access, а в ней столбец с датами, но в формате текст, поэтому встречаются некорректные даты

SELECT CDate(Report_table.date_) AS Выражение1, Report_table.date_
FROM Report_table

некорректные даты вижу, но мне надо, чтобы запрос выводил только некорректные даты, помогите, пожалуйста

Попробуйте так
SELECT Report_table.date_
FROM Report_table where IsDate(Report_table.date_)=false
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39893397
Katy_2108
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zimkon,
спасибо большое, получилось
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39897081
Djois
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Помогите пожалуйста и мне написать запрос)

есть таблица:

№ Р1 Р2 Р39 txt7 txt8 Ф112 txt1 txt2 Ф111 txt3 txt4 Ф110 txt5 txt6 А1

Запрос должен вернуть строки:

№ Р1 Р2 Р312 txt1 txt2 Ф110 txt5 txt6 А1

т.е. одбросить дубли по полю P3, оставляя строки с максимальным №
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39897093
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT t1.*
FROM [table] AS t1
JOIN (SELECT [P3], MAX([№]) AS [№]
      FROM [table]
      GROUP BY [P3]) AS t2
WHERE t1.[P3]= t2.[P3]
  AND t1.[№]= t2.[№]
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39897098
Djois
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока решаю делать это так, но вдруг есть что-то более простое и надёжное)

Данные хранятся в таблице с именем - Лист1

Код: xml
1.
2.
3.
SELECT Лист1.[№], Лист1.Р1, Лист1.Р2, Лист1.Р3
FROM Лист1
WHERE (DMax("[№]","[Лист1]","[Р3]=" & "'" & [Р3] & "'")-[№])=0;
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39897117
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djois
Пока решаю делать это так
Это будет по подзапросу на каждую запись - о производительности забудь. Но если устраивает - да и хрен бы с им...
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39897172
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT t1.*
FROM [table] AS t1
JOIN (SELECT [P3], MAX([№]) AS [№]
      FROM [table]
      GROUP BY [P3]) AS t2
WHERE t1.[P3]= t2.[P3]
  AND t1.[№]= t2.[№]


возможна ошибка систаксиса в запросе Access (если это не какой-то другой диалект)
Код: sql
1.
2.
3.
4.
SELECT t1.*
FROM [table] AS t1 INNER JOIN (SELECT [P3], MAX([№]) AS [№]
      FROM [table]
      GROUP BY [P3]) AS t2 ON (t1.[№]= t2.[№]) AND (t1.[P3]= t2.[P3]);
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39897231
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Katy_2108
Есть таблица в Access, а в ней столбец с датами, но в формате текст...
На будущее: поле с датами ДОЛЖНО иметь тип дата/время-некорректная дата не "проглотится" и в тбл.не попадет
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39897449
Djois
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zimkon
Akina
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT t1.*
FROM [table] AS t1
JOIN (SELECT [P3], MAX([№]) AS [№]
      FROM [table]
      GROUP BY [P3]) AS t2
WHERE t1.[P3]= t2.[P3]
  AND t1.[№]= t2.[№]


возможна ошибка систаксиса в запросе Access (если это не какой-то другой диалект)
Код: sql
1.
2.
3.
4.
SELECT t1.*
FROM [table] AS t1 INNER JOIN (SELECT [P3], MAX([№]) AS [№]
      FROM [table]
      GROUP BY [P3]) AS t2 ON (t1.[№]= t2.[№]) AND (t1.[P3]= t2.[P3]);



Да, первый запрос выдаёт ошибку синтаксиса, а второй ругается на циклическую ссылку ((
Access 2010

Пока пользуюсь этим,
Код: sql
1.
2.
3.
SELECT table.*
FROM [table]
WHERE ((((DMax("[№]","[table]","[Р3]=" & "'" & [Р3] & "'")-[№])=0)=0));



но как и говорил Akina это по подзапросу на каждую запись на больших данных долго отрабатывает
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39897458
Djois
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: xml
1.
2.
3.
SELECT table.*
FROM [table]
WHERE ((DMax("[№]","[table]","[Р3]=" & "'" & [Р3] & "'")-[№]))=0;



*Djois,
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39897473
Djois
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Djois
Добрый день.
Помогите пожалуйста и мне написать запрос)

есть таблица:

№ Р1 Р2 Р39 txt7 txt8 Ф112 txt1 txt2 Ф111 txt3 txt4 Ф110 txt5 txt6 А1


Запрос должен вернуть строки:

№ Р1 Р2 Р312 txt1 txt2 Ф110 txt5 txt6 А1

т.е. одбросить дубли по полю P3, оставляя строки с максимальным №
Сразу не сказал, а наверно это важно, поле № ключевое (счётчик)

Код: sql
1.
2.
3.
SELECT table.*
FROM [table]
WHERE DMax("[№]","[table]","[Р3]=" & "'" & [Р3] & "'")-[№]=0;



DMax в этом случаи отрабатывает конечно быстрее... или нет?
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39897479
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Djois
zimkon
пропущено...

возможна ошибка систаксиса в запросе Access (если это не какой-то другой диалект)
Код: sql
1.
2.
3.
4.
SELECT t1.*
FROM [table] AS t1 INNER JOIN (SELECT [P3], MAX([№]) AS [№]
      FROM [table]
      GROUP BY [P3]) AS t2 ON (t1.[№]= t2.[№]) AND (t1.[P3]= t2.[P3]);



Да, первый запрос выдаёт ошибку синтаксиса, а второй ругается на циклическую ссылку ((
Access 2010

Пока пользуюсь этим,
Код: sql
1.
2.
3.
SELECT table.*
FROM [table]
WHERE ((((DMax("[№]","[table]","[Р3]=" & "'" & [Р3] & "'")-[№])=0)=0));



но как и говорил Akina это по подзапросу на каждую запись на больших данных долго отрабатывает

А так?
Код: sql
1.
2.
3.
4.
SELECT t1.*
FROM [table] AS t1 INNER JOIN (SELECT t3.[P3], MAX(t3.[№]) AS N
      FROM [table] as t3
      GROUP BY t3.[P3]) AS t2 ON (t1.[№]= t2.N) AND (t1.[P3]= t2.[P3]);
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39897481
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djois
первый запрос выдаёт ошибку синтаксиса
Ну это заморочки самого Аксесса - любит он лишнего навесить.

Если делать визардами, то получаются такие тексты (форматирование сохранено):

Подзапрос (name=subquery):
Код: sql
1.
2.
3.
SELECT Max(table.[№]) AS [Max-№], table.P3
FROM [table]
GROUP BY table.P3;


Основной запрос (name=mainquery):
Код: sql
1.
2.
SELECT table.*
FROM [table] INNER JOIN subquery ON (table.P3 = subquery.P3) AND (table.[№] = subquery.[Max-№]);


Объединённый запрос (name=solidquery):
Код: sql
1.
2.
3.
4.
SELECT table.*
FROM [table] INNER JOIN (SELECT Max(table.[№]) AS [Max-№], table.P3
FROM [table]
GROUP BY table.P3) AS subquery ON (table.P3 = subquery.P3) AND (table.[№] = subquery.[Max-№]);


Все запросы - рабочие (проверено на модельных структуре и данных).
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39897482
Djois
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zimkon

А так?
Код: sql
1.
2.
3.
4.
SELECT t1.*
FROM [table] AS t1 INNER JOIN (SELECT t3.[P3], MAX(t3.[№]) AS N
      FROM [table] as t3
      GROUP BY t3.[P3]) AS t2 ON (t1.[№]= t2.N) AND (t1.[P3]= t2.[P3]);



не работает, сначала требует ввести значениет параметров:
t3.P3
t1.P3

и если что-то в параметры вводить - выдаёт только одну строку, а д.б. их две

№ Р1 Р2 Р3
12 txt1 txt2 Ф1
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39897491
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Djois,
возможно в запросе у P3 введена русская буква ЭР (или наоборот - латинская ПЭ) , а у вас в названии поля латинская (или наоборот - русская). Короче, надо чтобы было идентично и в запросе и в таблице
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39897494
Djois
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
Djois
первый запрос выдаёт ошибку синтаксиса
Ну это заморочки самого Аксесса - любит он лишнего навесить.

Если делать визардами, то получаются такие тексты (форматирование сохранено):

Подзапрос (name=subquery):
Код: sql
1.
2.
3.
SELECT Max(table.[№]) AS [Max-№], table.P3
FROM [table]
GROUP BY table.P3;


Основной запрос (name=mainquery):
Код: sql
1.
2.
SELECT table.*
FROM [table] INNER JOIN subquery ON (table.P3 = subquery.P3) AND (table.[№] = subquery.[Max-№]);


Объединённый запрос (name=solidquery):
Код: sql
1.
2.
3.
4.
SELECT table.*
FROM [table] INNER JOIN (SELECT Max(table.[№]) AS [Max-№], table.P3
FROM [table]
GROUP BY table.P3) AS subquery ON (table.P3 = subquery.P3) AND (table.[№] = subquery.[Max-№]);


Все запросы - рабочие (проверено на модельных структуре и данных).


Скопировал эти три запроса с указанными именами.
Объединённый запрос (name=solidquery) при запуске просит ввести значение параметра table.P3
и в результате выдаёт только одну строку:
№ Р1 Р2 Р312 txt1 txt2 Ф1

а их д.б. две

№ Р1 Р2 Р312 txt1 txt2 Ф110 txt5 txt6 А1
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39897495
Djois
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zimkon
Djois,
возможно в запросе у P3 введена русская буква ЭР (или наоборот - латинская ПЭ) , а у вас в названии поля латинская (или наоборот - русская). Короче, надо чтобы было идентично и в запросе и в таблице

ёлы палы точно проверю чуть позже отпишусь)))
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39897500
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправлю...
zimkon
Код: sql
1.
2.
3.
4.
SELECT t1.*
FROM [table] AS t1 INNER JOIN (SELECT t3.[P3], MAX(t3.[№]) AS N
      FROM [table] as t3
      GROUP BY t3.[P3]) AS t2 ON t1.[№]= t2.N;

...
Рейтинг: 0 / 0
Помогите написать запрос
    #39897519
Djois
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да всё работает, это я тупанул, спасибо!!!
...
Рейтинг: 0 / 0
Помогите написать запрос
    #39897549
zimkon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург
Поправлю...
zimkon
Код: sql
1.
2.
3.
4.
SELECT t1.*
FROM [table] AS t1 INNER JOIN (SELECT t3.[P3], MAX(t3.[№]) AS N
      FROM [table] as t3
      GROUP BY t3.[P3]) AS t2 ON t1.[№]= t2.N;



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


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