这是mysql v. 4.x..。我确信这是一个新手问题,但由于某些原因,我无法弄清楚sql是否能让它正常工作。以下是相关表格的近似值:
Item
---
ItemID等。
ItemPerson
--------
PersonID
ItemID
TimeAccessed假设我的ID是1,2,3,4,5
假设我在ItemPerson:{'JohnDoe',1,'12:00PM'}中有1张唱片
我有一个PersonName作为输入。我希望返回所有项目的列表,包括访问该项目的时间。如果给定的PersonName没有访问该项,我希望此时为NULL。
我试过以下几种方法:
SELECT i.*, ip.TimeAccessed
FROM Item i LEFT OUTER JOIN ItemPerson ip
ON i.ItemID = ip.ItemID
WHERE (ip.PersonName = 'JohnDoe' OR ip.PersonName IS NULL)我得到了“JohnDoe”的预期结果..。返回所有项目,ItemID 1有一个时间。
如果我将'JohnDoe‘改为'JaneDoe',我只得到ItemID的2-5,但我希望我的查询返回所有条目,每次都为NULL。
发布于 2016-04-19 21:08:15
在这种情况下,左联接可能是很棘手的。您将希望将person条件移到ON子句中;否则,您将得到与此人相关的项,或者根本没有人。(从逻辑上讲,抛开优化器不谈,在联接之后出现的位置)。
https://stackoverflow.com/questions/36729440
复制相似问题