0

誰かがこれで私を助けることができれば、私はこれらのテーブルを持っていますそして、私は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 になることはありません。表示されないという記録がある場合は、最後の写真にどのように表示されますか

お待ち頂きまして、ありがとうございます

4

1 に答える 1