我正在尝试从数据库中返回一些值
我有什么
USERS
user_id(pk)
OWN_EVENTS
user_id(fk)
event_id的(PK)
ATTENDEES
user_id(fk)
event_id的(FK)
我需要退货
我需要返回ATTENDEES
中的所有行,其中event_id等于某个值,status不等于3,来自OWN_EVENTS
表的该事件的event_name值和来自{{1的电子邮件值表}
我做过什么 我一直在尝试各种组合,但无法弄清楚我做错了什么 http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins
即使这会返回null:
USERS
或
$query ="SELECT A1.event_name,A1.start_date
FROM ATTENDEES A1
INNER JOIN OWN_EVENTS A2 ON A2.event_id = A1.event_id
WHERE A1.event_id = $event_id";
我需要进行哪些查询调用?
EDIT ::::: 样本数据:
与会者
OwnEvents
用户
答案 0 :(得分:1)
问题是加入users表。您是从ATTENDEES
加入的。但是,我想你想要所有者的电子邮件。
这会将联接切换为left outer join
。这将返回ATTENDEES
表中所有匹配的行,即使其他表中没有匹配项:
SELECT oe.event_name, a.start_date, u.email
FROM ATTENDEES a left outer join
OWN_EVENTS oe
ON oe.event_id = a.event_id left outer join
USERS u
on a.user_id = u.user_id
WHERE a.event_id = $event_id AND a.status <> 3