gpt4 book ai didi

sql - 多连接查询返回很多结果且匹配不当

转载 作者:搜寻专家 更新时间:2023-10-30 23:16:45 25 4
gpt4 key购买 nike

我在 Oracle 中有以下最小模式:http://sqlfiddle.com/#!4/c1ed0/14

我运行的查询产生了太多结果,这个查询:

select cat.*, status.*, source.*
from cats cat, status status, source source
Left OUTER JOIN source source2
on source2.sourceid = 1
Right OUTER JOIN status status2
on status2.isStray =0
order by cat.name

将产生不正确的结果。我期待的是一个如下所示的表,但我似乎无法提出正确的 SQL。

NAME    AGE     LENGTH  STATUSID    CATSOURCE   ISSTRAY     SOURCEID    CATID
Adam 1 25 null null null 1 2
Bill 5 1 null null null null null
Charles 7 5 null null null null null
Steve 12 15 1 1 1 1 1

用简单的英语来说,我正在寻找的是返回所有已知的猫+它们相关的猫源+它们的猫状态,同时保留空值。我将拥有的唯一信息是我好奇的来源。我也只想要状态为 STRAY 或 UNKNOWN (null) 的猫

更新

为了澄清,猫的映射是这样的:

Cat 的 id 存储在 Source 表的 catId 列下。
Status 表将源的 PK 引用为标记为 catSource 的列。

实际上,要获取当前猫的状态,查询将是:

select cat.* from cats cat, status status, source source  
where cat.id = source.catId
and source.sourceId = status.catSource

最终查询

select *
from source
inner join cats on source.catid = cats.id
and source.sourceid = 1
left join status on source.sourceid = status.catsource

最佳答案

select *
from source
inner join cats on source.catid = cats.id
left join status on source.sourceid = status.catsource
and statusid=1

关于sql - 多连接查询返回很多结果且匹配不当,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12321127/

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