powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Пересечение дат в одной таблице
10 сообщений из 10, страница 1 из 1
Пересечение дат в одной таблице
    #38653502
MixMuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Подскажите пожалуйста,
есть таблица
автор
customer_id | car_id | date_from | date_to



customers_id и car_id - соответственно айди клиента и машины
date_from - дата, когда клиент взял машину
date_to - дата, когда клиент вернул или должен вернуть машину

Нужно сделать запрос, по которому будут выбраны customer_id у которых на момент взятия машины (date_ from) уже имелась другая машина на руках
например если в таблице есть
customer1 взял машину1 05.05.2014 и вернул 20.05.2014
customer1 взял машину2 10.05.2014 и вернул 23.05.2014
нужно вывести customer1

заранее Спасибо!
...
Рейтинг: 0 / 0
Пересечение дат в одной таблице
    #38653623
/\/\/\/\/\/\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MixMuz,

Код: sql
1.
2.
3.
4.
5.
SELECT DISTINCT
  t2.customer_id AS customer_id
FROM table t1
LEFT JOIN table t2 ON t2.customer_id = t1.customer_id
                  AND t2.date_from BETWEEN t1.date_from AND t1.date_to
...
Рейтинг: 0 / 0
Пересечение дат в одной таблице
    #38653675
MixMuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
/\/\/\/\/\/\MixMuz,

Код: sql
1.
2.
3.
4.
5.
SELECT DISTINCT
  t2.customer_id AS customer_id
FROM table t1
LEFT JOIN table t2 ON t2.customer_id = t1.customer_id
                  AND t2.date_from BETWEEN t1.date_from AND t1.date_to



Он выводит просто список всех сustomer_id
т к к условию все записи подходят
...
Рейтинг: 0 / 0
Пересечение дат в одной таблице
    #38653721
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MixMuz,
добавьте в соединение что-то на тему

Код: sql
1.
AND t2.key<>t1.key



како-нить кей у таблы ведь есть
...
Рейтинг: 0 / 0
Пересечение дат в одной таблице
    #38653748
MixMuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwwq
како-нить кей у таблы ведь есть

поля customer_id и car_id связаны с другими таблицами, а эта таблица без id, только связи
я уже и не знаю, возможно ли вообще сделать такой запрос ...
...
Рейтинг: 0 / 0
Пересечение дат в одной таблице
    #38653940
MixMuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо!
Решил поблему.
Если кому то интересно ...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT last_name, license_number
FROM cars_has_customers AS t1
JOIN customers ON t1.customers_id= customers.id
WHERE EXISTS 
         (
           SELECT NULL
             FROM cars_has_customers AS t2
            WHERE t1.customers_id = t2.customers_id
              AND t1.date_to >= t2.date_from
              AND t2.date_to >= t1.date_from
              AND t1.cars_id != t2.cars_id
         )
  GROUP BY license_number, last_name
  ORDER BY last_name, license_number ;
...
Рейтинг: 0 / 0
Пересечение дат в одной таблице
    #38653945
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select  distinct customer_id from (
select *,row_number over(order by customer_id) as pk from table t1
where not exists (
select * from (
select *,row_number over(order by customer_id) as pk from table
) as t2 where t2.pk<>t1.pk and t1.customer_id=t2.customer_id and t1.date_from<t2.date_to and t1.date_from>t1.date_from
) 
) as t


Запрос получился кривой, потому что автор не указал ключевое поле? поэтому имхо запрос спокойно можно упростить.
...
Рейтинг: 0 / 0
Пересечение дат в одной таблице
    #38653946
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очепятка.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select  distinct customer_id from (
select *,row_number over(order by customer_id) as pk from table t1
where EXISTS (
select * from (
select *,row_number over(order by customer_id) as pk from table
) as t2 where t2.pk<>t1.pk and t1.customer_id=t2.customer_id and t1.date_from<t2.date_to and t1.date_from>t1.date_from
) 
) as t
...
Рейтинг: 0 / 0
Пересечение дат в одной таблице
    #38654715
MixMuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TrogloditЗапрос получился кривой, потому что автор не указал ключевое поле? поэтому имхо запрос спокойно можно упростить.

В таблице нет как такого (искусственного ) ключевого поля как row_id и т. п.
...
Рейтинг: 0 / 0
Пересечение дат в одной таблице
    #38654874
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MixMuzдругая машинаAND t2.car_id <> t1.car_id
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Пересечение дат в одной таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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