Mysql中的条件内部连接
我需要进行更多的内部联接,以便在列中具有值的表(而不是许多记录) 因此,与此相反:Mysql中的条件内部连接,mysql,switch-statement,case,inner-join,Mysql,Switch Statement,Case,Inner Join,我需要进行更多的内部联接,以便在列中具有值的表(而不是许多记录) 因此,与此相反: SELECT U.id, U.name, FV1.value AS Azienda, FV2.value AS AreaManager, FV3.value AS Tipologia FROM `kizgv_users` U JOIN `kizgv_fields_values` FV1 ON FV1.item_id = U.id AND FV1.field_
SELECT U.id,
U.name,
FV1.value AS Azienda,
FV2.value AS AreaManager,
FV3.value AS Tipologia
FROM `kizgv_users` U
JOIN `kizgv_fields_values` FV1
ON FV1.item_id = U.id AND FV1.field_id = 8
JOIN `kizgv_fields_values` FV2
ON FV2.item_id = U.id AND FV2.field_id = 29
JOIN `kizgv_fields_values` FV3
ON FV3.item_id = U.id AND FV3.field_id = 33
我尝试这样做是为了提高性能,因为它会出现500个错误
SELECT U.id, U.name, FV1.value as Azienda, FV2.value as AreaManager, FV3.value as Tipologia
FROM kizgv_users U
CASE
'kizgv_fields_values'.'field_id'
WHEN
8
THEN
(JOIN kizgv_fields_values FV1 on FV1.item_id = U.id)
WHEN
29
THEN
(JOIN kizgv_fields_values FV2 on FV2.item_id = U.id)
WHEN
33
THEN
(JOIN kizgv_fields_values FV3 on FV3.item_id = U.id)
@RaymondNijland谢谢,我试过了,结果出来了
create view omni as (
select
kizgv_fields_values.*,
case when field_id = "8" then field_id end as Azienda,
case when field_id = "29" then field_id end as AreaManager,
case when field_id = "33" then field_id end as Tipo
from kizgv_fields_values
);
select * from kizgv_users;
create view pivot as (
select
item_id,
sum(Azienda) as Azienda,
sum(AreaManager) as AreaManager,
sum(Tipo) as Tipo
from omni
group by item_id
);
select * from pivot;
create view finale as (
select
item_id,
coalesce(Azienda, 0) as Azienda,
coalesce(AreaManager, 0) as AreaManager,
coalesce(Tipo, 0) as Tipo
from pivot
);
select * from finale;
尽管如此,与多个查询相比,我的性能并没有提高有更好的方法可以做到这一点。。诸如此类的事情你能再澄清一下你想做什么吗?你是说你的多重连接查询做了你想要的,你只是在寻找一种不同的方法来做它?如果是这样,您可以使用枢轴。否则,我不知道你在问什么,对不起。谢谢大家!是的,多连接查询可以满足我的需要,我只是在寻找一种不同的方法来实现它,因为当我执行它时,结果是一个500错误。所以我在寻找一种更有效的方法。