gpt4 book ai didi

mysql - 基于三个表的层次结构

转载 作者:行者123 更新时间:2023-11-29 06:31:46 25 4
gpt4 key购买 nike

我想要像下面这样的单个表的行

id name parentId

我当前的表是(它们之间的键是外键)

category
id name

这是所有的父级和

subcategory
id name catId

最后一个表是事件

activity
id name subcatId

对于类别表的parentId,它不会是什么,因为类别是所有的父级

到目前为止我的尝试没有成功

示例数据

category
C-1 HR null
C-2 Development null

subcategory
SC-1 Hiring C-1
SC-2 Admin C-1
SC-3 Developer C-2

activity
A-1 College Hiring SC-1
A-2 Job Fair SC-1
A-3 Java Development SC-3


Result Needed
1 HR null
2 Development null
3 Hiring C-1
4 Admin C-1
5 Developer C-2
6 College SC-1
7 Job Fair SC-1
8 Java Development SC-3

我希望它更清楚。如果您需要任何进一步的信息,请告诉我谢谢

我在 2 张 table 上的尝试

select name 
from (
select c.name
from category c
union all
select b.name
from subcategory b
inner join category ca
on ca.id = b.parentId
)

我收到一条错误消息

Every derived table must have its own alias

我是否需要将以下行添加到我的查询中

start with parent_id is null
connect by prior id = parent_id

最佳答案

尝试这样的事情:

SELECT @id := @id + 1 AS id, name, parent_id
FROM ( SELECT name, NULL AS parent_id FROM category
UNION ALL
SELECT id, name, catId FROM subcategory
UNION ALL
SELECT id, name, parentId FROM activity
) q,
( SELECT @id := 0 ) w;
  • 使用 UNION ALL 连接多个查询的结果。
  • UNION中,第一个查询的列名用作结果集的列名。
  • 使用变量 @id 和赋值运算符 := 生成列 ID 的计算值。
  • 请注意:如果您使用 LIMITOFFSETid 列的值将不一致。

关于mysql - 基于三个表的层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55861982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com