gpt4 book ai didi

mysql - 从表 A 中获取与表 B 相关的记录,该表在同一个表中具有子记录

转载 作者:行者123 更新时间:2023-11-29 10:33:34 25 4
gpt4 key购买 nike

我有这样的情况:

一张名为“服务”的表,另一个名为“公司”的表:

services
------------
id
code
companies_id

companies
------------
id
parent_id

示例记录:

services
---------------
id code companies_id
1 s1 1
2 s2 1
3 s3 2
4 s4 2
5 s5 3
6 s6 3

companies
---------------
id parent_id
1 0
2 1
3 0

服务与具有companies_id公司相关。这样一个公司可能有0到N个服务。

一家公司可能有子公司,因此这些子公司与具有 parent_id 的父公司相关联。

我需要一个查询来获取与给定公司 (id:1) 及其子公司相关的服务中的任何记录。

我应该得到这个(公司 1 及其子公司 2 的服务):

services
------------------
id code companies_id
1 s1 1
2 s2 1
3 s3 2
4 s4 2

这是我的尝试,但我似乎没有得到正确的行数:

SELECT * 
FROM services
INNER JOIN companies ON services.companies_id = companies.id
LEFT JOIN companies as children_companies ON services.companies_id = children_companies.id
WHERE (companies.id =1 OR children_companies.parent_id = 1)

请问有什么建议吗?

最佳答案

这应该有效

select b.id, b.code, b.companies_id from companies a
join services b on a.id = b.companies_id
where b.companies_id = 1 or a.id in
(select id from companies c where c.parent_id = 1)

关于mysql - 从表 A 中获取与表 B 相关的记录,该表在同一个表中具有子记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46936933/

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