首页 > 解决方案 > 如果没有记录,忽略内部连接?

问题描述

必须满足这两个要求:

给出了以下表格和列:

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

状态:身份证,姓名

电子邮件日志:id、product_id、主题、文本、date_created

我尝试了以下方法:

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 表中有记录时才有效。如果 emaillogs 表中没有记录,则仍应选择产品。

标签: mysqlsymfonydoctrine-orm

解决方案


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


推荐阅读