2014-12-07 23 views
0

我需要一些幫助做多個連接,我不是很擅長這一點,並需要一種方法來使它工作。在mysql查詢中使用來自5個不同表的數據

有5個數據表,需要從每個表中輸出數據。有一個人,訪問,中心,日期和表格。訪問表具有從其他表中獲取數據的ID。我想用這個表格來獲得這個人的狀態,看他們到過什麼日期,在什麼中心,他們的名字,以及他們被看到的人。 (我希望這是有道理的)。

輸出應該希望是這樣的:

> Person FirstName 
> Person LastName 
> Seen By 
> Date 
> Center 
> Status 

編輯//這是我所希望看到mockup

香港專業教育學院已在樞軸表中讀取了樣機,並會不喜歡使用那。香港專業教育學院創建的SQL小提琴這裏: http://www.sqlfiddle.com/#!2/d19d2c

編輯// 香港專業教育學院設法寫一半查詢,但我懷疑它的工作原理,但我想它的一個起點。

SELECT d.date 
    , p.Firstname 
    , p.Lastname 
    , c.centername 
    , v.status 
    , s.FirstName 
    , s.LastName 
    FROM visit v 
    LEFT 
    JOIN date d 
    ON v.dateID = d.id 
    LEFT 
    JOIN centerName c 
    ON c.centerID = c.id 

謝謝!

+0

你提到的獲取數據,這意味着'SELECT',但你的提琴顯示'INSERT'。你在找什麼輸出? – Sablefoste 2014-12-07 12:25:33

+0

對不起,我忘了把我試圖做的查詢,但沒有工作 – user3411002 2014-12-07 12:27:21

+0

檢查編輯。 @SableFoste ive在問題中描述了我需要的那種輸出。 – user3411002 2014-12-07 12:31:37

回答

0

從你的表結構這似乎你想要一個這樣的查詢:

SELECT 
    d.date, 
    CONCAT_WS(' ', p.Firstname ,p.Lastname) AS "Person", 
    v.status, 
    CONCAT_WS(' ', s.FirstName, s.LastName) AS "Seenby", 
    c.centername 

FROM visit v 
JOIN person p ON v.PersonID = p.ID 
JOIN seenby s ON v.seenbyID = s.ID 
LEFT JOIN date d ON v.dateID = d.id 
LEFT JOIN center c ON v.centerID = c.id 

最後兩個加入也許應該是正常的內部連接,並沒有離開聯接,酌情調整。

CONCAT_WS()函數使用第一個參數的值作爲分隔符(本例中爲空格)將其參數連接到一個字符串中。

Sample SQL Fiddle

+0

感謝那正是我需要的,但是有沒有辦法將名字和姓氏連接在一起,所以它只出現在一列中?編輯//我看到你做了哈哈感謝批次 – user3411002 2014-12-07 12:49:45

+0

@ user3411002是的,我剛剛更新了基於您的示例輸出的查詢。 – jpw 2014-12-07 12:50:08

相關問題