这是我的问题:
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
左连接应该从登录表返回所有用户,但它的工作方式类似于内连接?
答案 0 :(得分:3)
您的where
子句正在将外部联接转换为内部联接。至少这个条款确实:
DATE(rozliczenia.data) BETWEEN DATE('$rok-$mies-00') AND DATE('$rok-$mies-$daysinm')
如果没有匹配项,则会失败,因为data
为NULL
。
您需要将 second 表上的任何条件移动到on
子句。我不确定这是否是唯一的这种情况。
答案 1 :(得分:2)
这会将LEFT JOIN变为INNER JOIN
WHERE ... AND DATE(rozliczenia.data) BETWEEN ...
由于没有“right”的结果将对所有字段都为NULL,DATE(rozliczenia.data)
将为NULL。
答案 2 :(得分:1)
试试这个
where to_char(02573569, '00000000') = ponbr