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

时间:2017-10-25 15:53:30

标签: mysql sql database

我遇到这种情况:

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

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)

有什么建议吗?

1 个答案:

答案 0 :(得分: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)