首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询选择和分组

SQL查询选择和分组
EN

Stack Overflow用户
提问于 2014-09-27 15:40:14
回答 2查看 34关注 0票数 1

我有两个mysql表:

表“小组”:

代码语言:javascript
复制
+--------+----------+---+
| id_panel | name_panel |
+-----------------------+
|    1   | Some name    |
|    2   | Other name   |
+--------+--------------+

表"panel_power":

代码语言:javascript
复制
+--------+----------+----+
| id_panel | panel_power |
+------------------------+
|    1   |      300W     |
|    1   |      500W     |
|    2   |      450W     |
|    2   |      300W     |
+--------+---------------+

我需要输出面板名称和他们所有相关的权力。

比如:

代码语言:javascript
复制
Some panel name: 300W, 500W
Other name: 450W, 300W
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-27 15:45:05

可以将组concat和concat组合起来,以便在一列中获得结果,但如果您计划将数据存储在这样的表中,则不建议这样做。

代码语言:javascript
复制
SELECT CONCAT(p.name_panel, 
              ': ', 
              GROUP_CONCAT(pp.panel_power ORDER BY pp.panel_power SEPARATOR ', ')
             ) as "Provided Power"
FROM panels p
JOIN panel_powers pp ON p.id_panel = pp.id_panel
GROUP BY p.name_panel

Fiddle Demo

另外请注意,如果您计划将这些数据放在网页上的列表中或类似的内容中,我建议您提取与名称面板相关的id,并将其作为数据id项列在列表中。这样你就可以轻松地拔出它以防你需要击中服务器..。如果您不这样做,那么您将不得不尝试解析出name_panel以确定它属于何处。

票数 2
EN

Stack Overflow用户

发布于 2014-09-27 15:43:27

您可以使用group_concat()函数:

代码语言:javascript
复制
select p.name_panel, group_concat(pp.panel_power separator ', ') as powers
from panels p join
     panel_powers pp
     on pp.id_panel = p.id
group by p.name_panel;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26076323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档