如果有人可以幫助我與這一個我有這些表我想要得到兩個日期之間的所有預訂,並知道是否有任何一個是由其他人完成或它是失敗的。Mysql查詢左加入訪問變量
表:登記
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,當我移動左手旁邊的「一」表拋出錯誤不能看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
很抱歉,如果我的英語不太好,在此先感謝大家誰可以提供幫助。
這裏的一些圖片,希望越來越清楚,我無法解釋什麼,我想正確
這是預訂 Booking table
這是失敗
我不能把超過2個鏈接所以這就是爲什麼這兩個就像文字 所以當我想要得到我的預訂我做這個
s16.postimg.org/l00k1math/image.jpg
我想要做的是
s12.postimg.org/5o5hbnmdp/image.jpg
但不僅接受預訂ID爲1我不會被b.id = un.booking_id,然後如果有記錄無法顯示是如何在最後畫面
感謝您的耐心
您提供的數據似乎沒有意義。 * fail *和* other *表中的記錄都具有相同的booking_id(即2),但它們的日期都不匹配預訂表中預訂號2的日期。那是對的嗎?輸出失敗列中的1是什麼意思? by_other專欄中的2是什麼意思?重複欄的用途是什麼? –
對不起,也許我沒有解釋清楚日期只在預訂表中很重要,它們會出現在這個循環中,這是通過Tally表完成的,所以當某個預訂處於給定日期之間或者處於期間時會出現在這個語句中,並且在這裏,如果在計數「showdate」失敗或預訂由其他用戶完成的某些日期後,我想在左邊加入以添加,以便日後可以顯示。如果我把這張支票放在我的where子句中,它就是制動我需要的循環,因爲我的預訂應該重複。我希望這使得任何的立場 – Alex
我仍然不明白。在第二個結果行('2 2013-07-01 1 NULL')中,id 2從哪裏來?這是否意味着預訂ID?當天預訂的ID爲1,而不是2,所以對我來說沒有意義。爲什麼它會失敗?由於日期與失敗日期相符?如果是這樣,爲什麼第一個結果行不顯示失敗,因爲它具有相同的顯示日期?爲什麼前兩個結果有相同的演出日期呢?你有兩個'2013-07-01',但沒有'2013-07-02'。 –