2015-11-20 134 views
2

我有兩個表預訂CurrentDay_Booking如何使用SQL LEFT JOIN查詢

**booking**: 

ID bookingdate TableID starttime endtime userID NumberOfPeople phoneNumber EmailID  
1 2015-11-20 1   11:15:00 11:55:00 john  2    21029917  gmail.com  
2 2015-11-20 1   11:15:00 11:40:00 riyas 2    21029917  gmail.com  
3 2015-11-20 1   12:15:00 12:45:00 riyas 2    21029917  gmail.com 
4 2015-11-21 2   11:20:00 11:30:00 riyas 2    21029917  gmail.com 

**CurrentDay_Booking**: 

ID bookingdate TableID starttime endtime userID NumberOfPeople phoneNumber EmailID  
1 2015-11-20 1   11:15:00 11:55:00 john  2    21029917  gmail.com 

我的問題是:需要從預訂CurrentDay_Booking放數據,不equel到CurrentDay_Booking ID和equel爲當前日期和開始時間和結束時間之間或equel到當前時間

我得到了當前時間和當前日期使用不同的查詢

我不知道如何使用where子句和LEFT JOIN

這裏是我的查詢:

SELECT 
    t.ID, 
    t.bookingdate, 
    t.TableID, 
    t.starttime, 
    t.endtime, 
    t.userID, 
    t.NumberOfPeople, 
    t.phoneNumber, 
    t.EmailID 
FROM booking t 
LEFT JOIN CurrentDay_Booking s 
ON t.ID = s.ID 
WHERE s.ID is null 
    and t.bookingdate='" . $cur_gmt_date . "' 
    and t.starttime <= '" . $cur_gmt_time24 . "' 
    and t.endtime => '" . $cur_gmt_time24 . "'; 

我認爲我在把條件放錯了地方。

請任何人幫忙,多謝提前。

+0

正確...將標準的「AND」組件移動到左連接通過... ON T.ID = S.ID和T.bookingdate .... – DRapp

+0

即使我不能工作試過,請你可以編輯查詢,謝謝 – rwahid

+1

在我嘗試提供一個正確的左連接語法之前,你能描述一下你正在努力完成什麼嗎?兩個表結構都是相同的,第二行的第一行與第一個表相同。這是否像餐廳午餐/晚餐預訂?派對中有多少人?依靠電話號碼來防止重複?同一個人/電話,但不同的時間段?你在找什麼? – DRapp

回答

0

從您所描述的情況來看,由於表格被添加到所描述的場景中,因此創建表格沒有任何意義。結果表是相同的,那麼爲什麼不直接從表格中直接查詢所有特定日期的預訂。沒有聯接需要基於另一個表是它已經存在或不

SELECT 
     t.ID, 
     t.bookingdate, 
     t.TableID, 
     t.starttime, 
     t.endtime, 
     t.userID, 
     t.NumberOfPeople, 
     t.phoneNumber, 
     t.EmailID 
    FROM 
     booking t 
    WHERE 
     t.bookingdate='" . $cur_gmt_date . "' 

隨着基於(bookingdate)你「預訂」表的索引,它並沒有對什麼是已經存在或不能比擬的。那麼你不必擔心每天都要清除它,只是爲了開始新的一天。

+0

感謝您的回覆。這是作品。但不符合我的要求。 – rwahid

+0

@rwahid,我知道它不符合你的輔助表的需要,但是複製只是爲了複製而不是查詢和標準化的內容。 – DRapp