SQL Select语句以获得排序格式的结果

时间:2015-05-31 12:23:57

标签: mysql

我需要从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

1 个答案:

答案 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 '/')