如果没有记录,则忽略内部联接吗?

时间:2018-11-07 22:04:45

标签: mysql symfony doctrine-orm

这两个要求必须满足:

  • 选择状态为“正在等待”的产品。
  • 最后一封电子邮件必须在3天前发送。

给出了以下表格和列:

产品:id,名称,status_id,通知

状态:ID,名称

电子邮件日志:id,product_id,主题,文本,创建日期

我尝试了以下操作:

SELECT 
    product.id
FROM
    product
        LEFT JOIN
    status ON product.status_id = status.id
        INNER JOIN
    emaillog ON product.id = emaillog.product_id
        AND (emaillog.date_created <= '2018-11-04 16:32:49')
WHERE
    (status.name = 'waiting' AND product.notification = 1)
GROUP BY emaillog.product_id

仅当电子邮件日志表中有记录时,此方法才有效。如果emaillogs表中没有记录,则仍应选择产品。

1 个答案:

答案 0 :(得分:0)

如果要在结果集中保留未联接的行,请使用LEFT JOIN而不是普通的内部JOIN。但是要提防,在WHERE子句中提到左联接表中的一列会将左联接转换为内部联接。