Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как отобрать в SELECT две строки подряд по дате?
|
|||
|---|---|---|---|
|
#18+
Нужно: Определить 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 ?? . Помогите кто-нибудь ! И вообще, что делать и как обрабатывать, если в базу попадают две строки абсолютно между собой совпадающие ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.08.2004, 16:51 |
|
||
|
Как отобрать в SELECT две строки подряд по дате?
|
|||
|---|---|---|---|
|
#18+
Может нужно сделать create view ?? View не может дать больше информации, чем прямой запрос.нет столбца с уникальным для каждой строки кодом. что делать и как обрабатыватьВы же диагноз поставили! Сперва удалить лишние из одинаковых записей, а затем добавить уникальный составной ключ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2004, 14:00 |
|
||
|
Как отобрать в SELECT две строки подряд по дате?
|
|||
|---|---|---|---|
|
#18+
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 и поступить как велит начальство и ТЗ, например удалить один экземпляр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 02:32 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=217&tid=1348237]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
166ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 273ms |

| 0 / 0 |
