2011-08-31 76 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