MySQL如果其他声明

时间:2014-08-01 17:55:23

标签: php mysql database

以下是一个示例查询:

SELECT tags.serial_number, tags.expiry_date, tags.activation_date, users.email, users.offers, users.newsletter, pets.name as petname
    FROM `tags`
    JOIN `users` on users.id = tags.user_id
    JOIN `pets` on pets.id = tags.pet_id
    WHERE  users.username = 'myusername' AND  users.email = 'itsme@mydomain.com'

在这种情况下,将返回的唯一结果是分配给用户和宠物的那些标记。但我想要的是能够接收所有标签,无论它们是否被分配给宠物。

如果有某种"如果有宠物,请显示宠物名称,ELSE只需将宠物名称返回为NULL"或类似的东西?

2 个答案:

答案 0 :(得分:2)

尝试使用Left Outer Join将使用Null填充未加入表格的行

SELECT tags.serial_number, tags.expiry_date, tags.activation_date, users.email, users.offers, users.newsletter, pets.name as petname
FROM `tags`
JOIN `users` on users.id = tags.user_id
Left Outer JOIN `pets` on pets.id = tags.pet_id
WHERE  users.username = 'myusername' AND  users.email = 'itsme@mydomain.com'

答案 1 :(得分:1)

快速回答是使用 LEFT JOIN 代替 JOIN

(我确定这个问题之前已经在StackOverflow上询问过......)