加入收藏 | 设为首页 | 会员中心 | 我要投稿 52站长网 (https://www.52zhanzhang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

可以提取我正在寻找的数据的MySQL查询?

发布时间:2021-01-31 23:46:16 所属栏目:MySql教程 来源:网络整理
导读:在我正在进行的项目中,我陷入了Hades的表结构中.请记住两件事: 我现在无法更改表结构.我暂时坚持使用它. 查询是动态生成的,而不是硬编码的.因此,当我要查询可以提取此数据的查询时,我真正要努力的是一种将生成所需查询的算法. 希望我能在不使您的眼睛呆滞和

在我正在进行的项目中,我陷入了Hades的表结构中.请记住两件事:

>我现在无法更改表结构.我暂时坚持使用它.
>查询是动态生成的,而不是硬编码的.因此,当我要查询可以提取此数据的查询时,我真正要努力的是一种将生成所需查询的算法.

希望我能在不使您的眼睛呆滞和大脑爆裂的情况下解释问题.

我们有一个实例表,看起来(简化)如下:

Instances
InstanceID    active
1              Y
2              Y
3              Y
4              N
5              Y
6              Y

然后,沿着这些行有多个数据表:

Table1

InstanceID    field1   reference_field2
1             John      5
2             Sally        NULL
3             Fred          6
4             Joe          NULL


Table2
InstanceID    field3 
5              1
6              1


Table3
InstanceID    fieldID    field4
5               1        Howard
5               2        James
6               2        Betty

请注意,表1中的reference_field2包含对另一个实例的引用.
表2中的Field3有点复杂.它包含表3的fieldID.

我需要的是一个查询,该查询将为我提供如下列表:

InstanceID    field1     field4     
1              John      Howard
2              Sally
3              Fred

问题是,在我当前拥有的查询中,我没有得到Fred,因为表3中没有fieldID 1和InstanceID 6的条目.因此,到目前为止,我能得到的最好的列表是

InstanceID    field1     field4     
1              John      Howard
2              Sally

本质上,如果表1中有一个字段2的条目,而表3中没有一个包含field2中包含的instanceID和field3中包含的字段ID的条目,那么我不会从field1中获取数据.

我一直看着联接,直到脸色发青,并且当table3没有条目时,我看不到一种处理情况的方法.

最佳答案 左加入…

SELECT a.InstanceID,b.field1,d.field4
FROM instances AS a 
    JOIN Table1 AS b ON a.InstanceID = b.InstanceID
    LEFT JOIN Table2 AS c ON b.reference_field2 = c.InstanceID
    LEFT JOIN Table3 AS d ON (c.InstanceID = d.InstanceID AND c.field3 = d.fieldId)
WHERE a.active = 'Y'

左两个连接应该处理没有其他行的情况.

(编辑:52站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读