gpt4 book ai didi

sql - 尝试编写一个内部连接来过滤掉一些条件

转载 作者:行者123 更新时间:2023-12-02 08:00:43 25 4
gpt4 key购买 nike

我目前正在努力执行一些连接,希望有人能对此有所启发。 我有三个表:A、B、C

  • 表C列出了个人姓名
  • 表A列出了他们喜欢吃的食物

  • 表 B 是显示一个人喜欢 C 中 A 中的哪些食物的链接(我们的系统是在没有外键的情况下构建的!我知道,这很痛苦!)

我想写的是一个查询,它将返回表 C 中的值列表,该表显示不喜欢特定食物的个人......比如 PFC

我有以下内容:

select * from table_c c
inner join table_b b
on c.name = b.bValue
inner join table_a a
on b.aValue = a.number
where a.value not in('PFC')

我假设连接有效,但由于表 A 有多个值,因此将返回额外的两行。如果其中一个联接显示我不想看到的食物,是否可以不向该客户显示?

Table A
|---------------------|------------------|
| Number | Value |
|---------------------|------------------|
| 1 | McDs |
|---------------------|------------------|
| 1 | KFC |
|---------------------|------------------|
| 1 | PFC |
|---------------------|------------------|

Table B
|---------------------|------------------|
| bValue | aValue |
|---------------------|------------------|
| John | 1 |
|---------------------|------------------|

Table C
|---------------------|
| Name |
|---------------------|
| John |
|---------------------|

如果有所不同,我也在使用 SQL Server 2013!

最佳答案

不存在:

select * from table_c c
where not exists (
select 1 from table_b b inner join table_a a
on b.aValue = a.number
where b.bValue = c.name and a.value = 'PFC'
)

关于sql - 尝试编写一个内部连接来过滤掉一些条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57672437/

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