我有一张名为sales
的表格。其中有catid
,desc
,parentforeignkey
列,记录如下:
catid desc parentforeignkey
1, clothes, 1
2, shoes, 1
3, socks, 1
4, gloves, 1
5, mittens, 4
6, leather gloves, 4
7, plain gloves, 4
...
如何构建查询以显示此关系?
答案 0 :(得分:1)
我可以对此采取行动,但我很难看到这个问题。我觉得你想要一个查询按父外键对选择进行分组,然后列出每个父项的catid和desc。所以基本上像
SELECT t.parentforeignkey, t.catid, t.desc
FROM table1 as t
GROUP BY t.parentforeignkey, t.catid, t.desc;
注意:小心使用" desc"作为列名,DESC是用于降序的保留字(用于排序)
这会给你一个像:
的结果 ParentForeignKey | CatID | Desc
1 1 Clothes
1 2 Shoes
2 2 Shoes
3 1 Clothes
所以诀窍是使用GROUP BY来分配父组和子组。但要小心,因为按命令分组的顺序很重要(GROUP BY Catid, ParentforeignKey
产生的结果与我上面列出的结果不同)。此外,您需要明确说明每列与分组的关系。如果你留下一个列,你可能会收到类似&#34的错误(取决于你的DBMS);你试图指定一个不包含指定表达式的查询作为聚合函数的一部分&# 34;