SQL Join返回null

时间:2013-08-26 13:07:23

标签: php sql mysqli

我正在尝试从数据库中返回一些值

我有什么

USERS

user_id(pk)

enter image description here

OWN_EVENTS

user_id(fk)

event_id的(PK) enter image description here

ATTENDEES

user_id(fk)

event_id的(FK)

enter image description here

我需要退货

我需要返回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 ::::: 样本数据:

与会者

enter image description here

OwnEvents

enter image description here

用户

enter image description here

1 个答案:

答案 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