2016-11-06 69 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