0

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

我有的

用户

user_id (pk)

在此处输入图像描述

OWN_EVENTS

user_id (fk)

event_id(pk) 在此处输入图像描述

与会者

user_id (fk)

event_id(fk)

在此处输入图像描述

我需要返回什么

我需要返回ATTENDEESevent_id 中的所有行等于某个值,状态不等于 3 并且,该事件的 event_name 值从OWN_EVENTS表和电子邮件值从USERS

我尝试了什么我 一直在尝试各种组合,但无法弄清楚我做错了什么 http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

即使这样也返回 null:

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

或者

SELECT A1.event_name,A1.start_date ,A3.email 
FROM ATTENDEES A1  
INNER JOIN OWN_EVENTS A2  ON  A2.event_id = A1.event_id
INNER JOIN USERS A3  ON  A3.user_id = A1.user_id
WHERE A1.event_id = $event_id AND A1.status != 3

我需要打什么查询电话?

编辑::::: 示例数据:

与会者

在此处输入图像描述

自己的事件

在此处输入图像描述

用户

在此处输入图像描述

4

1 回答 1

1

问题是连接到用户表。您从 加入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
于 2013-08-26T13:22:33.960 回答