Мне нужно сделать больше внутренних соединений, чтобы иметь таблицу со значением в столбце (вместо множества записей).
Итак, вместо этого:
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 спасибо, я пробовал: stackoverflow.com/questions/7674786/mysql-pivot-table и вот это вышло
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;
Тем не менее, у меня нет улучшения производительности по сравнению с несколькими запросами.
Не могли бы вы пояснить, что вы пытаетесь сделать? Вы хотите сказать, что ваш запрос множественных объединений делает то, что вы хотите, вы просто ищете другой способ сделать это? если это так, вы можете использовать PIVOT. В противном случае я не совсем понимаю, о чем вы спрашиваете, извините.
Спасибо всем!
Да, запрос множественных объединений делает то, что я хочу, я просто ищу другой способ сделать это, потому что при его выполнении возникает ошибка 500. Так что я ищу более производительный способ.






Есть способ лучше сделать .. Что-то вроде stackoverflow.com/questions/7674786/mysql-pivot-table или это stackoverflow.com/questions/1241178/mysql-rows-to-columns