gpt4 book ai didi

mysql - 数据转置拼接,如何遵循inner join条件?

转载 作者:行者123 更新时间:2023-11-29 02:31:23 28 4
gpt4 key购买 nike

我有很多表,它们之间有一个外键和主键(基本)系统。

我想根据某些条件连接(逗号分隔)最后一个“深入”表的值。

因为很难解释,所以我画了一张图,我认为它非常明确: image

可在此处找到大图:http://tinypic.com/r/2ngdaah/6

注意:tableE 已创建,其列名称与 tableD

中显示的名称相对应

谢谢!

编辑( fiddle ):

http://sqlfiddle.com/#!2/f28c8/1/0

最佳答案

我进行了查询,但不确定是否正确。原因是您描述的条件使用了符号 <=(小于或等于),它看起来只是 =(等于),因为它们下面的结果。

但是,试试这个:

select * 
from (select id,
name,
max(case when e.tableD_id = 1 then e.agg_values else null end) alpha,
max(case when e.tableD_id = 2 then e.agg_values else null end) beta,
max(case when e.tableD_id = 3 then e.agg_values else null end) gamma
from tableA a,
(select b.tableA_id,
b.tableD_id,
group_concat(cast(c.value as char) order by c.id asc) agg_values
from tableB b,
tableC c
where c.tableB_id = b.id
group by b.tableD_id,b.tableA_id
having count(*) >= 3) e
where a.id = e.tableA_id
group by id, name
) n
where n.alpha is not null
and n.beta is not null
and n.gamma is not null

编辑:

修改查询以支持使用 >= 而不是 <= 的条件。

SQLFIDDLE:http://sqlfiddle.com/#!2/f28c8/1/0

SQLFIDDLE,仅限第一个条件:http://sqlfiddle.com/#!2/f28c8/4

关于mysql - 数据转置拼接,如何遵循inner join条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12762512/

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