少し複雑...
いますが、唯一のid聖霊降臨祭は、行を複製してこれらのみではないとヌルタイプ
SELECT `id_booking`, `id_task`, `type`, `date`
FROM (SELECT `id` AS `id_booking`, null AS `id_task`, 1 AS `type`, `date_in` AS `date`
FROM `booking`
WHERE `date_in` <= '2016-10-24'
AND `date_in` >= '2016-10-14'
AND `status` = 'accepted'
UNION ALL
SELECT `id` AS `id_booking`, null AS `id_task`, 2 AS `type`, `date_out` AS `date`
FROM `booking`
WHERE `date_out` <= '2016-10-24'
AND `date_out` >= '2016-10-14'
AND `status` = 'accepted'
UNION ALL
SELECT `booking_id` AS `id_booking`, `id` AS `id_task`, `id_type` AS `type`, `date` AS `date`
FROM `task`
WHERE `date` <= '2016-10-24'
AND `date` >= '2016-10-14') AS `tasks`
where (`id_booking`, `type`) in ( select `id_booking`, `type` FROM
(SELECT `id` AS `id_booking`, null AS `id_task`, 1 AS `type`, `date_in` AS `date`
FROM `booking`
WHERE `date_in` <= '2016-10-24'
AND `date_in` >= '2016-10-14'
AND `status` = 'accepted'
UNION ALL
SELECT `id` AS `id_booking`, null AS `id_task`, 2 AS `type`, `date_out` AS `date`
FROM `booking`
WHERE `date_out` <= '2016-10-24'
AND `date_out` >= '2016-10-14'
AND `status` = 'accepted'
UNION ALL
SELECT `booking_id` AS `id_booking`, `id` AS `id_task`, `id_type` AS `type`, `date` AS `date`
FROM `task`
WHERE `date` <= '2016-10-24'
AND `date` >= '2016-10-14') t
group by `id_booking`, `type`
having count(*) > 1
)
and id_task is not null
union
SELECT `id_booking`, `id_task`, `type`, `date`
FROM (SELECT `id` AS `id_booking`, null AS `id_task`, 1 AS `type`, `date_in` AS `date`
FROM `booking`
WHERE `date_in` <= '2016-10-24'
AND `date_in` >= '2016-10-14'
AND `status` = 'accepted'
UNION ALL
SELECT `id` AS `id_booking`, null AS `id_task`, 2 AS `type`, `date_out` AS `date`
FROM `booking`
WHERE `date_out` <= '2016-10-24'
AND `date_out` >= '2016-10-14'
AND `status` = 'accepted'
UNION ALL
SELECT `booking_id` AS `id_booking`, `id` AS `id_task`, `id_type` AS `type`, `date` AS `date`
FROM `task`
WHERE `date` <= '2016-10-24'
AND `date` >= '2016-10-14') AS `tasks`
where (`id_booking`, `type`) in ( select `id_booking`, `type` FROM
(SELECT `id` AS `id_booking`, null AS `id_task`, 1 AS `type`, `date_in` AS `date`
FROM `booking`
WHERE `date_in` <= '2016-10-24'
AND `date_in` >= '2016-10-14'
AND `status` = 'accepted'
UNION ALL
SELECT `id` AS `id_booking`, null AS `id_task`, 2 AS `type`, `date_out` AS `date`
FROM `booking`
WHERE `date_out` <= '2016-10-24'
AND `date_out` >= '2016-10-14'
AND `status` = 'accepted'
UNION ALL
SELECT `booking_id` AS `id_booking`, `id` AS `id_task`, `id_type` AS `type`, `date` AS `date`
FROM `task`
WHERE `date` <= '2016-10-24'
AND `date` >= '2016-10-14') t
group by `id_booking`, `type`
having count(*) = 1
)
and id_task is null
ORDER BY `date` ASC
こんにちは、このために選択する必要があります選択組合の結果から!大変申し訳ありませんが、私はその返事を理解していません。私が投稿した結果は、2つの異なるテーブルから来て、そのうちの1つに2つの異なる日付カラムがあります。私はUNIONをやっているので、それが理由です。このテーブル構造でソリューションを適用するにはどうすればよいですか? –
@DavidLombardía申し訳ありません私はあなたのコードを簡単に見ています..とにかく私はあなたに完全なクエリを参照して答えを更新しました – scaisEdge
ありがとう!しかし、私はまだ問題があります:最初の1つは、 "すべての派生テーブルは、独自のエイリアスを持っている必要があります"と私はこのSQLでnullではないid_taskとレジスタを持つことができますが、私は同じid_bookingと型の複数のレジスタがある場合に備えて、id_taskがnullでない場合にのみ登録します。ありがとう! –