2012-08-31 31 views
-1

我嘗試這樣做:如果在MySQL JOIN PHP笨

控制器我所做的:

foreach($troublesome_pupil as $u) 
array_push($bad_pupils,$u->id) 

我送$ bad_pupils我的模型和查詢之前,我做:

$bad_pupils = implode(',', $bad_pupils); 

Select user.name from user 
IF (user.id NOT IN '$bad_pupils') 
JOIN `marksheet` ON marksheet.id = user.id 
JOIN `holiday` ON holiday.id = user.id 
ENDIF 

基本上$ bad_pupils是一個數組,所以我檢查該數組中的用戶標識(我已經照顧使用implode的數組),如果發現然後只加入兩個表,否則繼續

此外,如果在我的SELECT語句說個例子:我有

select (user.name , marksheet.marks) .. 

如果該行被IF語句中什麼將是該行的標識列的值跳過?

我該如何做到這一點?

+0

y是答案dissappearing? –

+0

我認爲,如果工作在句子而不是查詢中,IE,在商店程序,觸發器,開始 - 結束http://dev.mysql.com/doc/refman/5.0/en/if.html我不確定如果你可以這樣混合使用 – jcho360

+0

@ jcho360'IF'也適用於查詢。恕我直言OP應該考慮看看http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if – Havelock

回答

1

你能用這個嗎?

SELECT user.name, marksheet.marks, holiday.holiday 
     FROM user 
LEFT JOIN marksheet ON marksheet.id = user.id AND user.id NOT IN ($bad_pupils) 
LEFT JOIN holiday ON holiday.id = user.id AND user.id NOT IN ($bad_pupils)