如何处理提供多行结果的子查询?

时间:2016-11-06 20:22:17

标签: mysql

我在尝试编写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“负责的事件的所有事件和细节。”

任何帮助将不胜感激

1 个答案:

答案 0 :(得分: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