2012-01-05 110 views
0

我有3個表格,usersonline,mobstersgangsmysql JOINS查詢

我試圖爲在線用戶頁面創建一個查詢,該頁面將運行usersonline表中的記錄,將ID鏈接到mobsters表中的相關記錄。如果流氓成員在幫派中,我希望它也可以從gangs表中獲取記錄。

這裏是我的查詢到目前爲止(這不起作用):

SELECT m.*, g.* FROM usersonline u 
    INNER JOIN mobsters m ON u.userID = m.id 
     JOIN gangs g ON g.id = m.gang 
     ORDER BY u.timestamp DESC 

什麼樣的加入,我應該使用?這個查詢是否正確?

gang表是可選的,但它應該始終在mobsters中有一條與usersonline相關的記錄。

注意:我的實際查詢並不是從每個表中獲取所有字段,只是以這種方式進行簡化。

+1

你運行了嗎?它回來了什麼?那有什麼問題?在黑暗中拍攝,但嘗試將'LEFT OUTER'添加到'JOIN gangs'並驗證結果。 – 2012-01-05 22:55:02

回答

2

你需要一個在黑幫表自加入「幫會表是可選的」

例如

SELECT m.*, g.* FROM usersonline u 
    INNER JOIN mobsters m ON u.userID = m.id 
     LEFT JOIN gangs g ON g.id = m.gang 
     ORDER BY u.timestamp DESC