誰かがこれで私を助けることができれば、私はこれらのテーブルを持っていますそして、私は2つの日付の間のすべての予約を取得し、それらのいずれかが他の誰かによって行われたか、それとも失敗したかを知りたい.
表:予約
id | date | date_end | repeat | day_of_week | user_id | price
---------------------------------------------------------------------
1 2013-07-01 0000-00-00 1 3 1 20
2 2013-07-16 0000-00-00 1 -1 1 10
表:Bookings_done_by_other
id | date | user_id | booking_id
---------------------------------
1 2013-07-01 2 2
2 2013-07-13 2 2
表:Bookings_fail
id | date | booking_id
---------------------------
1 2013-07-01 2
2 2013-07-11 2
表:タリー
id
--
1
....
500
これはうまく機能している私のクエリですが、私が望むものすべてを得るためにそれを管理することはできません.
SELECT f.date as fail, b.id, b.date, a.showdate, DATEDIFF(b.date, a.showdate) AS diff
FROM bookings as b
LEFT JOIN bookings_fail f ON (b.id = f.booking_id and DATE(f.date) = DATE(a.showdate) )
,
(
SELECT DATE_ADD('2013-07-01 00:00:00',INTERVAL Id DAY) as showdate
FROM `tally`
WHERE (DATE_ADD('2013-07-01 00:00:00',INTERVAL Id DAY) <= '2013-07-20 00:00:00')
ORDER BY Id ASC
) a
WHERE
MOD(DATEDIFF(b.date, a.showdate), b.repeat) = 0
AND
DATE(a.showdate)>= DATE(b.date)
このような場合、左結合で a.showdate が表示されないというエラーがスローされます。左結合を「a」テーブルの隣に移動すると、b.id が表示されないというエラーがスローされるため、この結合を機能させる方法はありますか?
私はこのような結果を得たいと思っています
id | showdate | fail | by_other |
-----------------------------
1 2013-07-01 NULL 2
2 2013-07-01 1 NULL //Or date
1 2013-07-03 NULL NULL
1 2013-07-04 NULL NULL
1 2013-07-05 NULL NULL
1 2013-07-06 NULL NULL
.............................
1 2013-07-20 NULL NULL
私の英語が下手で申し訳ありませんが、助けていただける皆様に感謝します。
ここにいくつかの写真があります
これはブッキングです ブッキングテーブル
これは失敗です
2つ以上のリンクを置くことはできないので、これら2つはテキストのようなものなので、ある日付の予約を取得したいときに何が起こっているのですか?
s16.postimg.org/l00k1math/image.jpg
私がやりたかったことは
s12.postimg.org/5o5hbnmdp/image.jpg
しかし、ID 1 での予約だけでなく、b.id = un.booking_id になることはありません。表示されないという記録がある場合は、最後の写真にどのように表示されますか
お待ち頂きまして、ありがとうございます