Mysql:
Table_A
------------
id name
1 Name1
2 Name2
Table_B
------------
a_id type value
1 width 100
1 height 100
1 color red
2 width 50
2 height 80
Неизвестно, сколько значений типа существует в таблице_B.
как получить результат как:
id name width height color
1 Name1 100 100 red
2 Name2 50 80 null
SELECT a.id, a.name, b_Width.value AS width, b_Height.value AS height, b_color.value AS color
FROM Table_A AS a
JOIN Table_B AS b_Width
ON b_Width.a_id = a.id AND b_Width.type = 'width'
JOIN Table_B AS b_Height
ON b_Height.a_id = a.id AND b_Height.type = 'height'
JOIN Table_B AS b_Color
ON b_Color.a_id = a.id AND b_Color.type = 'color'
Но серьезно подумайте о перепроектировании вашей схемы. значение содержит цвета и линейные размеры, было бы лучше, если бы оно было спроектировано по-разному.
Храните таблицу так, как есть, но затем создайте таблицу с названием "Детали", которая имеет столбцы ширины/высоты/цвета. Или таблицу с названием "Размер" с столбцами ширины/высоты и таблицу "Цвет" с именем цвета или значением RGB. Каждая дополнительная таблица, конечно, имеет FK для таблицы A, которая может или не может использоваться в качестве таблицы PK.
Ну, я бы не рекомендовал использовать анти-шаблон EAV для баз данных, поскольку он в основном хранит неструктурированные данные в структурированных базах данных, но мне приходилось сражаться с ним один раз раньше, так что вот что-то намного быстрее, чем внутренние соединения
выберите a.id, a.name, max (случай, когда b.type = 'height', затем b.value end) как высота, max (случай, когда b.type = 'width', затем b.value end) как ширина, max (случай, когда b.type = 'color', затем b.value end) как цвет из test.tablea a, test.tableb b где a.id = b.a_id group by a.id
использовать запрос выбора с помощью sub Query
как select id, Name, (выберите тип из таблицы_B, где a_id = table_A.id и type = 'width'), как ширина от table_A
то же самое, что и вы, вы можете добавить другие столбцы, которые вам нужны ОК