2009-12-09 64 views
1

我有這個疑問MySQL查詢:使用條件語句查詢

SELECT 
IF(isnull(ub.user_lecture_id), 0, ub.user_lecture_id) as IsPurchased, 
cs.title,cs.start_date, cs.start_time, cs.end_time 
FROM campus_schedule cs 
LEFT JOIN campus_bookinfo cb ON cs.bookid=cb.idx_campus_bookinfo 
LEFT JOIN user_lectures ub ON ub.id_product = cs.idx_campus_schedule AND ub.id_customer = 11 
WHERE cs.idx_campus = 1 and cs.title like '%%' and cs.status=1 

這表明: Click to view Output

說明:如果(IsPurchased == 0),則還不買我的客戶

我的問題:如果您查看IsPurchased = 1的行時間,則時間範圍與IsPurchases = 0中的時間衝突。我怎樣才能比較並得出結論:查詢的同一日期與其他行的時間和日期衝突。結果可能是1或0在「衝突」字段名稱

希望你明白了。謝謝您的幫助!!!

回答

1

要比較時間,你會發現它更容易使用DATETIME字段。

要檢查「衝突」行,您可能需要在WHERE子句中有一個子查詢。

1

子查詢應該可以工作,但在mysql中效率不高。你應該創建臨時表並分析它。或者做同樣的內聯,如:

set @lastdate=0; 
set @lasttime=0; 

select IsPurchased, title, start_date, start_time, end_time, if(@lastdate = start_date, @lasttime < end_time, 1) as CONFLICT, @lastdate:=start_date, @lasttime:=start_time 
from (your_query ORDER BY start_date, start_time, end_time) t ; 

這只是一個想法,它爲我多次工作。