Если у вас есть только два поля, то для этого есть опция left join
:
select i.*, efv1.value as value_1, efv2.value as value_2
from items i left join
extrafieldvalues efv1
on efv1.iditem = i.id and
efv1.type = 1 left join
extrafieldvalues efv2
on efv1.iditem = i.id and
efv1.type = 2 ;
С точки зрения производительности, два объединения, вероятно, быстрее, чем агрегация, и это облегчает введите больше столбцов от items
. С другой стороны, условное агрегирование легче обобщается, и производительность меняется незначительно, поскольку к select
.
добавляется больше столбцов из
extrafieldvalues
.