我需要从3个不同的表中获取信息并将其显示为单个表。
三个表和结果表如下所示。这里的技巧是,在Table1中,我需要合并具有相同s_id的所有行,并且它应该导致结果表(category.table1)中显示的值。 有人可以帮我解决这个问题;
Table1
=======
s_id name Category cat_id
----- ---- ----- -------
1 ABC Alert 0
2 DEF Alert 0
3 EFG Alert 0
2 DEF Paranomal 1
1 ABC Activity 0
3 EFG Paranomal 1
1 ABC Paranomal 1
Table2
=======
s_id dev_name dev_id
----- -------- -----
1 phil 0123010
2 adam 0143134
3 norm 0153322
Table3
======
s_id carv_name
----- --------
1 ford
2 vw
3 fiat
result
======
s_id category.table1 dev_name.table2 carv_name.table3
------ --------------- --------------- ----------------
1 Alert/Activity/Paranomal phil ford
2 Alert/Paranomal adam vw
3 Alert/Paranomal norm fiat
答案 0 :(得分:0)
您可以使用GROUP_CONCAT
:
SELECT T1.s_id,GROUP_CONCAT(T1.Category SEPARATOR '/') as Category,T2.dev_name,T3.carv_name
FROM Table1 T1 JOIN
Table2 T2 ON T1.s_id=T2.s_id JOIN
Table3 T3 ON T1.s_id=T3.s_id
GROUP BY s_id
结果:
s_id Category dev_name carv_name
-------------------------------------------------------
1 Alert/Activity/Paranomal phil ford
2 Alert/Paranomal adam vw
3 Paranomal/Alert norm fiat
请参阅SQL Fiddle中的结果。
NB:要在结果中订购类别的内容,请替换
GROUP_CONCAT(T1.Category SEPARATOR '/')
带
GROUP_CONCAT(T1.Category ORDER BY T1.Category ASC SEPARATOR '/')