2011-08-31 51 views
0

我有多個(13位數字)表格有一個共同點:他們的ID。在已知ID上加入多個表格

要點是,我需要查詢單個ID的結果(可以不同於每個表的多個),並返回具有該ID的所有結果 - 它不是UID。

我有一個表應該/可能是其他表連接的起始點,以及每個案例中存在被詢問的ID的位置。

不想發佈我到目前爲止所嘗試的 - 我想避免笑聲。閱讀我在Mysql中編寫的內容即將看到一個孩子走在第一步。可愛又好笑。

感謝您的任何提示,建議和好評!

回答

3

據我所知,你有一個父表與ID值和許多類似的子表應連接到父表。選中此查詢。這是你想要的嗎?

SELECT * FROM parent_table t 
LEFT JOIN child_table1 t1 
    ON t.id = t1.id 
LEFT JOIN child_table2 t2 
    ON t.id = t2.id 
... 
LEFT JOIN child_table<n> t<n> 
    ON t.id = t<n>.id 

或者這個變體;在這種情況下,所有的子表將返回成行 -

SELECT * FROM parent_table t 
LEFT JOIN (
    SELECT * FROM child_table1 
    UNION ALL 
    SELECT * FROM child_table2 
    UNION ALL 
    ... 
    SELECT * FROM child_table<n> 
    UNION ALL 
) t1 
ON t.id = t1.id 
+0

它接近(我猜)。我需要的是所有與父表共享(例如)「6」ID的表上的所有條目。順便說一句:在第二個例子中,確定'ON t.id = t1.id'是正確的? :) – kaiser

+0

@Kaiser:是的,這是正確的。請參閱:http://dev.mysql.com/doc/refman/5.0/en/join.html,更多信息請參閱:http://www.codinghorror.com/blog/2007/10/a-visual-explanation -of-sql-joins.html –

+0

@nikc已經知道coddinghorror鏈接 - 很好的解釋。第一種作品。奇怪的是:在涉及「更高」數量的表格時,它開始重複結果(從phpMyAdmin中嘗試)。只要我停留在4或5桌以下,它就可以工作。對於第二個例子,我得到一個「檢查你的語法」的錯誤... – kaiser