2013-11-15 57 views
-1

我是MySQL語法的新手,請大家幫忙。根據行的值比較列

更新查詢:

$query = mysql_query("SELECT campaign, team, employeeName, shiftcode, scheduleDate,STR_TO_DATE(scheduleIn,'%h:%i %p') as ScheduleIn, STR_TO_DATE(scheduleOut,'%h:%i %p') as ScheduleOut, STR_TO_DATE(MID(scheduleIn,7,4), '%h:%i') as sIn FROM tbl_uploadedschedule WHERE NOT EXISTS(SELECT scOrigtimein, scOrigtimeout FROM tbl_shiftcode WHERE STR_TO_DATE(tbl_uploadedschedule.scheduleIn,'%h:%i %p') = tbl_shiftcode.scOrigtimein or STR_TO_DATE(tbl_uploadedschedule.scheduleOut,'%h:%i %p')=tbl_shiftcode.scOrigtimeOut)") or die(mysql_error()); 

但它沒有返回,不知道如果STR_TO_DATE()正確不函數WHERE子句

+0

是否有任何理由,你不這樣做SELECT * FROM tableB的? –

+0

這兩個「主鍵」是什麼?或者其他的「外鍵」? – Edper

+0

@FilipeSilva - 是的,我可以做tableB中的select *,我只是不知道什麼是正確的語法。此外,表B有一個字符串時間,需要轉換爲時間,然後再比較它。 –

回答

0

嘗試使用NOT EXISTS,如:

SELECT * FROM TableB 
WHERE NOT EXISTS 
(SELECT * FROM TableA 
WHERE TableB.Shift_Codes=TableA.Shift_Codes 
AND TableB.Time_in = TableA.Time_in 
AND TableB.Time_out = TableA.Time_out) 

Fiddle Demo

使用STR_TO_DATE()

SELECT * FROM TableB 
WHERE NOT EXISTS 
(SELECT * FROM TableA 
WHERE TableB.Shift_Codes=TableA.Shift_Codes 
AND STR_TO_DATE(TableB.Time_in,'%h:%i:%s') = STR_TO_DATE(TableA.Time_in,'%h:%i:%s') 
AND STR_TO_DATE(TableB.Time_out,'%h:%i:%s') = STR_TO_DATE(TableA.Time_out,'%h:%i:%s')) 

Demo

+0

有什麼辦法可以做STR_TO_DATE()作爲我的WHERE子句的代碼? –

+0

每當我在WHERE子句中使用STR_TO_DATE()時,它總是返回空值。我不知道爲什麼。 –

+0

例如,如果您只需要小時,分鐘和秒,即STR_TO_DATE(Time_in,'%h:%i:%m'),那麼您可以喜歡。 – Edper