一个查询中的主/明细关系

时间:2010-07-13 08:39:40

标签: mysql

HI,

我不常用SQL编码器,我只将其用于简单的

任务。我想为一个简单的

找到解决方案

问题。

我有两张桌子:  Master_tbl [fields:ID,Plant,Detail_Group_ID]和Detail_tbl [fields:ID,Group_ID,Plant]

Master_tbl


ID  Plant   Detail_Group_ID

1    Tree       1

2    Flower     2



Detail_tbl



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掌握......

  

工厂

     

     

橡树

     

苹果

     

云杉

     

枫树

     

     

郁金香

     

玫瑰

     

     

兰花

提前完成

4 个答案:

答案 0 :(得分:3)

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

这将为您提供如下输出:

Group   Plant
Tree    Oak
Tree    Apple
Tree    Spruce
Tree    Maple
Flower  Tulip
Flower  Rose
Flower  Violet
Flower  Orchid

这是另一种选择:

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`;

输出结果为:

+--------+--------------------------+
| Group  | Plants                   |
+--------+--------------------------+
| Flower | Tulip,Rose,Violet,Orchid |
| Tree   | Oak,Apple,Spruce,Maple   |
+--------+--------------------------+

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

答案 1 :(得分:1)

试试这个:

SELECT 
CASE WHEN FullTimeEmployee = 'Yes' THEN 'Y' 
     WHEN FullTimeEmployee = 'No' THEN 'N'
     WHEN FullTimeEmployee = 'Expired' THEN 'E'
     ELSE 'Undefined'
     END AS 'isFullTimeEmployee'
FROM dbo.YOUR_TABLE_NAME

答案 2 :(得分:0)

尝试:

SELECT d.Plant FROM Detail_tbl d INNER JOIN Master_tbl m ON
d.Group_ID = m.Detail_Group_ID

答案 3 :(得分:0)

你的意思是,就像加入一样?

SELECT Master_tbl.ID as Master_ID, Master_tbl.Plant as Master_Plant, Detail_tbl.* FROM Master_tbl INNER JOIN Detail_tbl ON Master_tbl.Detail_Group_ID = Detail_tbl.Group_ID