gpt4 book ai didi

mysql - SQL 检查链接数据是否存在

转载 作者:行者123 更新时间:2023-11-29 19:07:30 25 4
gpt4 key购买 nike

我必须创建一个查询来检查哪些公司已经在某些级别(即其他表)上实现了数据。

现在我必须检查哪些公司有与其链接的地址。

我需要的表格链接如下:

  • 公司
  • 机构(通过 companyId 与公司关联)
  • 地址(通过设施 ID 与设施关联)

我已经创建了一个查询,用于检查公司的数据是否已在机构级别实现,我已将此查询粘贴在下面

SELECT c.id as 'Company Id', 
CASE e.companyId WHEN c.id THEN 1 ELSE 0 END as 'EstablishmentImplementation'
FROM company c LEFT JOIN establishment e ON c.Id = e.companyId

我已经尝试过下面粘贴的查询,但是当我检查系统时得到的结果不正确。

SELECT c.id as 'Company Id', 
CASE a.establishmentID WHEN e.ID THEN 1 ELSE 0 END as 'AdressesImplementation'
FROM company c JOIN establishment e ON c.Id = e.companyId
LEFT JOIN address a ON e.Id = a.establishmentId

如何获取所有公司的列表,并正确指示其是否已在地址级别实现数据?

<小时/>

编辑

<小时/>

我知道这个问题与这个问题非常相似:sql join which tells me if ID exists in other table

但在这种情况下,地址表中没有必要的 FK (companyId)。

如果我将示例从另一个问题转换为我正在使用的格式,它看起来会更像这样(其中 A = 公司,B = 机构,C = 地址):

A      B           C
-- --------- ----------
ID ID | FKID ID | FKID
-- ---|----- ----|------
1 9 | 3 10 | 8
2 8 | 3 11 | 8
3 7 | 4 12 | 9
4 6 | 4 13 | 9

结果将是这样的:

-----------------
ID | hasB | hasC
-----------------
1 no no
2 no no
3 yes yes
4 yes no

最佳答案

SELECT c.id as 'Company Id', 
CASE WHEN a.establishmentID=e.ID THEN 1 ELSE 0 END as 'AdressesImplementation'
FROM company c
INNER JOIN establishment e ON c.Id = e.companyId
LEFT JOIN address a ON e.Id = a.establishmentId

OR

SELECT c.id as 'Company Id', 'EstablishmentImplementation'
FROM company c
INNER JOIN establishment e ON c.Id = e.companyId
INNER JOIN address a ON e.Id = a.establishmentId

尝试上面的代码。在这里,您错过了 CASE WHEN 的正确语法。

希望这会有所帮助。

关于mysql - SQL 检查链接数据是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43370801/

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