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错误。所以我在寻找一种更有效的方法。