首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个查询中的主/详细关系

一个查询中的主/详细关系
EN

Stack Overflow用户
提问于 2010-07-13 08:39:40
回答 4查看 9.7K关注 0票数 2

我不是经常使用的SQL编码器,我只将它用于一个简单的任务。我想为一个可能很简单的问题找到一个解决方案。

我有两张桌子:

代码语言:javascript
复制
Master_tbl [fields: ID, Plant, Detail_Group_ID]

代码语言:javascript
复制
Detail_tbl [fields: ID, Group_ID, Plant]

有了这样的例子数据:

Master_tbl

代码语言:javascript
复制
ID  Plant   Detail_Group_ID

1    Tree       1

2    Flower     2

Detail_tbl

代码语言:javascript
复制
ID  Group_ID    Plant

1   1            Oak

2   1            Apple

3   1            Spruce

4   1            Maple

5   2            Tulip

6   2            Rose

7   2            Violet

8   2            Orchid

我希望使SQL语句将两个表放在一个表中(以主/详细方式):

结果表应该以Treeview的方式显示数据,其中主字段类似父节点,细节字段类似子节点(参见下面的结果)。我不太确定,如果这可以通过SQL来掌握.

橡树

苹果

云杉

Maple

郁金香

玫瑰

紫罗兰

兰花

提前鸣谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-13 08:52:15

代码语言:javascript
复制
SELECT Master_tbl.Plant as `Group`, Detail_tbl.Plant as Plant FROM Master_tbl
JOIN Detail_tbl on Master_tbl.Detail_Group_ID=Detail_tbl.Group_ID

这将为您提供如下输出:

代码语言:javascript
复制
Group   Plant
Tree    Oak
Tree    Apple
Tree    Spruce
Tree    Maple
Flower  Tulip
Flower  Rose
Flower  Violet
Flower  Orchid

以下是另一个选择:

代码语言:javascript
复制
SELECT Master_tbl.Plant as `Group`, group_concat(Detail_tbl.Plant) as Plants 
FROM Master_tbl JOIN Detail_tbl on Master_tbl.Detail_Group_ID=Detail_tbl.Group_ID
group by `Group`;

产出如下:

代码语言:javascript
复制
+--------+--------------------------+
| Group  | Plants                   |
+--------+--------------------------+
| Flower | Tulip,Rose,Violet,Orchid |
| Tree   | Oak,Apple,Spruce,Maple   |
+--------+--------------------------+

它不一定是你想要的树,但我认为它是你所能得到的最接近的树。在我能找到的所有东西中,我找不到一种方法像你发布的那样把树输出放在一列中。但是,使用这两个查询,您可以非常容易地根据组解析结果。

票数 3
EN

Stack Overflow用户

发布于 2015-07-02 19:25:47

试试这个:

代码语言:javascript
复制
select lista.* from
(
SELECT Master_tbl.ID MasterID, 0 DetailID, Master_tbl.Plant FROM Master_tbl

UNION

SELECT Master_tbl.ID MasterID, Detail_tbl.Group_ID DetailID, Detail_tbl.Plant FROM Master_tbl
JOIN Detail_tbl on Master_tbl.Detail_Group_ID=Detail_tbl.Group_ID
) lista
order by MasterID, DetailID
票数 1
EN

Stack Overflow用户

发布于 2010-07-13 08:53:29

尝试:

代码语言:javascript
复制
SELECT d.Plant FROM Detail_tbl d INNER JOIN Master_tbl m ON
d.Group_ID = m.Detail_Group_ID
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3235451

复制
相关文章

相似问题

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