以下是一个示例查询:
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"或类似的东西?
答案 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上询问过......)