[英]MySQL Left Join behaving like Inner Join
這是我的查詢:
SELECT logins.user as user,
rozliczenia.godziny as godziny,
rozliczenia.stawka as stawka,
rozliczenia.premia as premia,
rozliczenia.premiainna as premiainna
FROM logins
LEFT JOIN rozliczenia ON logins.id=rozliczenia.userid
WHERE user!='SUPERUSER'
AND user!='agata'
AND user!='tomek'
AND DATE(rozliczenia.data) BETWEEN
DATE('$rok-$mies-00') AND DATE('$rok-$mies-$daysinm')
在我的登錄名中:
bartosz
iza
grzegorz
slawek
pawel
michal
但在我的rozliczenia表格中,我只有:
bartosz
iza
grzegorz
slawek
pawel
左聯接應該從登錄表返回所有用戶,但是它像內部聯接一樣工作?
您的where
子句將外部聯接變成內部聯接。 至少此子句可以:
DATE(rozliczenia.data) BETWEEN DATE('$rok-$mies-00') AND DATE('$rok-$mies-$daysinm')
如果沒有匹配項,則失敗,因為data
為NULL
。
您需要將第二個表上的所有條件移至on
子句。 我不確定這是否是唯一的條件。
這將LEFT JOIN變成一個INNER
WHERE ... AND DATE(rozliczenia.data) BETWEEN ...
由於沒有“正確”結果的所有字段均為NULL,因此DATE(rozliczenia.data)
將為NULL。
嘗試這個
SELECT logins.user as user,
rozliczenia.godziny as godziny,
rozliczenia.stawka as stawka,
rozliczenia.premia as premia,
rozliczenia.premiainna as premiainna
FROM logins LEFT JOIN rozliczenia
ON (logins.id=rozliczenia.userid) and
DATE(rozliczenia.data) BETWEEN DATE('$rok-$mies-00') AND DATE('$rok-$mies-$daysinm')
WHERE user!='SUPERUSER' AND user!='agata' AND user!='tomek'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.