我的问题是:
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
但在我的罗兹利奇尼亚桌上我只有:
bartosz
iza
grzegorz
slawek
pawel
Left join应该返回logins表中的所有用户,但它的工作方式类似于内部join?
最佳答案
您的where
子句正在将外部联接转换为内部联接。至少本条款:
DATE(rozliczenia.data) BETWEEN DATE('$rok-$mies-00') AND DATE('$rok-$mies-$daysinm')
如果没有匹配,则失败,因为
data
是NULL
。您需要将第二个表上的任何条件移到
on
子句中。我不确定这是否是唯一的情况。关于mysql - MySQL左联接的行为类似于内部联接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33003185/