JOIN некоторых строк к таблице как новых столбцов

Рейтинг: 5Ответов: 1Опубликовано: 21.04.2015

Всем привет. Предположим есть таблица:

| id | item |
-------------
|  1 |  egg |

Довольно не большая, но для примера сойдет.

Есть вторая таблица:

| id | item_id | shape | corners |
----------------------------------
|  1 |       1 | round |       0 |
|  2 |       1 |  cube |       4 |

Буду краток - вопрос:
Как получить следующую таблицу?

| id | item | round | cube |
----------------------------
|  1 |  egg |     0 |    4 |

З.Ы. Соединение идет по id <-> item_id

Ответы

▲ 1

Как говорит @BOPOH можно использовать JOIN, но единствено верным будет использование GROUP_CONCAT:

SELECT
  GROUP_CONCAT(DISTINCT CONCAT('MAX(IF(t2.shape = ''', shape, ''', t2.corners, NULL)) AS ', shape))
INTO @pivot_sql
FROM table2;

SET @pivot_sql = CONCAT('SELECT t1.id, t1.item, ', @pivot_sql, ' 
                   FROM Table1 t1
                   LEFT JOIN Table2 t2 ON t1.id = t2.item_id
                   GROUP BY t1.id, t1.item');

PREPARE stmt FROM @pivot_sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

UPDATE Как отметили в комментариях, лучше собирать необходимый запрос на клиенте.