2012-05-30 38 views
1

我試圖運行一個MySQL查詢,我需要的信息相同的「片」源表兩次在目的有兩個變量的另一個表的數據... 讓我解釋:SQL查詢:參考在同一個查詢

2表:「事件」和「存檔事件」。 「存檔事件」是一個「鏈接」 - 將當前開放事件與過去(已關閉)事件橋接在一起。 此表只包含事件表中Event_ID的id。

我想要做的是獲取歸檔表中每個組合的事件標題。

EG:

----------------------------------- 
    |  ARCHIVE TABLE    | 
    |PK|ClosedEventID |CurrentEventID | 
    |1 |  5  |  3  | 
    |2 |  2  |  3  | 
    ----------------------------------- 

    ----------------------------------------- 
    |  EVENTS TABLE      | 
    |Event_ID | Event_Title | ............. | 
    | 1 | Party 1  | ............. | 
    | 2 | Party 2  | ............. | 
    | 3 | Wedding 1 | ............. | 
    | 4 | Funeral 1 | ............. | 
    | 5 | Pancake  | ............. | 
    ---------------------------------------- 

我猜測這將是一個連接或工會什麼的;我的SQL很公平,但我的腦袋正在旋轉,試圖解決這個問題。

所以,我想做到的是,在歸檔事件表中的每個「一」是這樣的,一旦查詢是運行(這樣我就可以對付它在PHP ...):

----------------------------------- 
    |  ARCHIVE TABLE    | 
    |PK|ClosedEventID |CurrentEventID | 
    |1 | Pancake  | Wedding 1 | 
    |2 | Party 2  | Wedding 1 | 
    ----------------------------------- 

非常感謝您的幫助! :)

回答

4

這是相當簡單:

SELECT 
    a.pk as "pk", 
    e1.event_title as "closed_event", 
    e2.event_title as "current_event" 
FROM 
    events as e1 
    JOIN archive as a on e1.event_id = a.closed_event_id 
    JOIN events as e2 on a.current_event_id = e2.event_id 
+0

「相當簡單」;事後看來,是的 - 但我是過於複雜的類型:P –

2
SELECT PK, e1.Event_Title AS ClosedEventID, e2.Event_Title AS CurrentEventID 
FROM ARCHIVE 
    JOIN EVENTS AS e1 ON e1.Event_ID = ARCHIVE.ClosedEventID 
    JOIN EVENTS AS e2 ON e2.Event_ID = ARCHIVE.CurrentEventID 

見它sqlfiddle

瞭解SQL joins

+0

我理解連接的理論,自從我使用它之後,我就已經很長時間了 - 我的sql文本書沒有任何幫助。 從不知道sqlfiddle - 非常方便,謝謝:) –