powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как отобрать в SELECT две строки подряд по дате?
4 сообщений из 4, страница 1 из 1
Как отобрать в SELECT две строки подряд по дате?
    #32665303
Vassili
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно:
Определить ID_PSG разных пассажиров, летевших на одном и том же месте хотя бы два раза подряд.
из отношения: Pass_in_trip(trip_no, date, ID_psg, place)
Таблица Pass_in_trip содержит информацию о полетах: номер рейса, дата вылета, идентификатор пассажира и место, на котором он сидел во время полета.
При этом следует иметь в виду, что
- длительность полета менее суток;
- время и дата учитывается относительно одного часового пояса;
Я набил код: SELECT a.id_psg
FROM PASS_IN_TRIP AS A JOIN PASS_IN_TRIP AS B
ON A.ID_PSG=B.ID_PSG
and a.place=b.place
AND A.TRIP_NO<>B.TRIP_NO
where not exists (select *
from pass_in_trip as C
where c.id_psg=a.id_psg
and ((a.date<c.date and c.date<b.date)OR
(A.DATE>C.DATE AND C.DATE>B.DATE) )
)
Ответ системы совпадает с искомым, но проверка на логику дает результат - неправильно. Мне кажется это потому, что база исходно дырявая, то есть
нет столбца с уникальным для каждой строки кодом. Может нужно сделать
create view ?? . Помогите кто-нибудь ! И вообще, что делать и как обрабатывать, если в базу попадают две строки абсолютно между собой совпадающие ??
...
Рейтинг: 0 / 0
Как отобрать в SELECT две строки подряд по дате?
    #32666708
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может нужно сделать create view ?? View не может дать больше информации, чем прямой запрос.нет столбца с уникальным для каждой строки кодом.
что делать и как обрабатыватьВы же диагноз поставили!
Сперва удалить лишние из одинаковых записей, а затем добавить уникальный составной ключ.
...
Рейтинг: 0 / 0
Как отобрать в SELECT две строки подряд по дате?
    #32667985
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Vassili

Какой SQL сервер?

Что значит фраза:
"но проверка на логику дает результат - неправильно"?

DATE измеряется с точностью до дня (date) или до минут/секунд (что-то вроде timestamp)? Если date, то будут проблемы с полетами в один день, они неотличимы. Например 3 полета в один день на одном сиденье в не будут замечены. Если DATE это timestamp, то вроде все правильно.

Убери "OR (A.DATE>C.DATE AND C.DATE>B.DATE)", по-моему это лишнее. Можно еще во внешний запрос добавить "and A.DATE<B.DATE". Будет чуть быстрее и пропадут дубликаты строк в ответе.

>И вообще, что делать и как обрабатывать, если в базу попадают две строки абсолютно между собой совпадающие ??

Найти их с помощью group by ... having count (*)>1 и поступить как велит начальство и ТЗ, например удалить один экземпляр.
...
Рейтинг: 0 / 0
Как отобрать в SELECT две строки подряд по дате?
    #32669718
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще нужно во внутренний запрос добавить "and c.place<>a.place"
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как отобрать в SELECT две строки подряд по дате?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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