我有一张桌子:
Table1
--------------------
id | category
--------------------
1 | Cat1
2 | Cat2
3 | Cat3对于每个类别,我都有带有子类别的表,以及相应的类别ID,如下所示:
Table2
--------------------------------
id | subcategory | category_id
--------------------------------
1 | subcat1 | 1
2 | subcat2 | 1
3 | subcat3 | 1
4 | subcat4 | 1Table3
--------------------------------
id | subcategory | category_id
--------------------------------
1 | subcat5 | 2
2 | subcat6 | 2
3 | subcat7 | 2
4 | subcat8 | 2我想要查询我的数据,所以我得到了以下信息:
-----------------------------------------------------
category | subcategory ( from Table2 and Table3)
-----------------------------------------------------
Cat1 | subcat1
Cat1 | subcat2
Cat1 | subcat3
Cat1 | subcat4
Cat2 | subcat5
Cat2 | subcat6
Cat2 | subcat7
Cat2 | subcat8
Cat3 | NULL我尝试过这样的操作,但它将每个表中的数据放在一个新列上。
SELECT Table1.category, Table2.subcategory , Table3.subcategory
FROM Table1
LEFT JOIN Table2 ON Table1.id=Table2 .category_id
LEFT JOIN Table3 ON Table1.id=Table3.category_id我是个初学者。
谢谢!
发布于 2016-10-19 22:20:23
您不需要为每个子类别创建新的表。如果您更改了这一点,那么您只有两个表,并且可以简单地连接它们。
发布于 2016-10-19 22:20:52
SELECT c.Category,s.SubCategory
FROM Table1 c
LEFT JOIN
(
SELECT * FROM Table2
UNION ALL
SELECT * FROM Table3
) s
ON c.id = s.id; 发布于 2016-10-19 22:25:09
正如我从您的问题中看到的,子类别位于不同的表中,因此您可以为这些表创建一个UNION (ALL),然后连接到您的Table1,如下所示
SELECT Table1.category, Table2.subcategory, Table3.subcategory
FROM Table1
LEFT JOIN (SELECT Table2.category_id, Table2.subcategory
FROM Table2
UNION ALL
SELECT Table3.category_id, Table3.subcategory
FROM Table3
) sub
ON Table1.id=sub.category_id希望这能对你有所帮助
https://stackoverflow.com/questions/40133923
复制相似问题