2015-01-29 6 views
0

Я борюсь с созданием запроса, который займет несколько строк из таблицы по идентификаторам, а затем присоединяется к строкам из той же таблицы, где start_date и находятся между родителем start_date. Рассмотрим таблицу, какСоединитесь с родительской датой между дочерними датами

событий

| id | event_type_id | start_date | end_date | 
| 1 | 1 | 10 | 100 | 
| 2 | 2 | 5 | 20 | 
| 3 | 2 | 8 | 50 | 

События с event_type_id = 1, как обычные события в то время как те, с = 2 период события. Я хотел бы построить запрос, чтобы получить все обычные события, но вместе с событиями периода, которые start_date и end_date находятся между обычным событием start_date. Поэтому, рассмотрев вышеприведенный пример, я хочу получить событие с id из 1 и присоединиться к событиям с event_type_id из 2 с start_date и между 10. Обратите внимание, что хотя есть только 1 запись с= 1 их было бы больше, и я хочу возьмите все из них в одном запросе. Я знаю, что это легко сделать для одиночной записи, но я хотел бы получить как целое дерево, поэтому я не стану с n + 1. Возможно ли это, или я должен думать о другом подходе?

ответ

0
SELECT 
    e1.*, 
    e2.* 
FROM 
    events e1 LEFT JOIN events e2 
ON 
    e1.start_date BETWEEN e2.start_date AND e2.end_date 
AND 
    e2.event_type_id=2 
WHERE 
    e1.event_type_id=1; 
Смежные вопросы