2016-11-06 52 views
0

我在尝试编写SQL语句时遇到问题,该语句查找ID负责的所有事件,然后列出与该事件关联的所有描述。如何处理提供多行结果的子查询?

Person_tbl 
PersonID (PK INT) 
Name (Varchar eg. "John Smith") 

Event_tbl 
EventID (PK INT) 
SUPV_on_DutyID (FK to PersondID) 
Event_Type (VarChar) 

Details_Event_tbl 
EventID (FK) 
DetailsID (FK) 

Details_Descrip_tbl 
DetailsID (PK INT) 
Details_Desc (VarChar) 

使用我的发言,我感到我是回行太多,...因为它是在SUPV可以有很多活动和事件可以有很多细节的情况下的错误。

我需要回答“列出”Jphn Smith“负责的所有事件和事件细节。

任何帮助,将不胜感激

+0

条款使用。但显示您的查询..所以我们可以评估它 – scaisEdge

+0

使用'JOIN'。参见http://blog.codinghorror.com/a-visual-explanation-of-sql-joins/ – Barmar

回答

1

作为示例连接操作:

SELECT p.personid 
     , p.name 
     , e.eventid 
     , e.event_type 
     , d.details_desc 
    FROM `Person_tbl` p 
    JOIN `Event_tbl` e 
    ON e.supv_on_dutyid = p.personid 
    LEFT 
    JOIN `Details_Event_tbl` j 
    ON j.eventid = e.eventid 
    LEFT 
    JOIN `Details_Descrip_tbl` d 
    ON d.detailsid = j.detailsid 
    WHERE p.personid = ? 
    ORDER BY e.eventid, d.detailsid 
+0

只是为了澄清,在你选择的部分使用p。和e。然后后来在from和join中定义它们。我不必声明p是什么。和e。是第一个还是先输入表名? – ccices

+0

我添加了完整的表格名称,而且您的解决方案效果非常好。我不明白使用的别名。 – ccices