我的问题是:

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')

如果没有匹配,则失败,因为dataNULL
您需要将第二个表上的任何条件移到on子句中。我不确定这是否是唯一的情况。

关于mysql - MySQL左联接的行为类似于内部联接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33003185/

10-12 16:51