Как получить pivot таблицу?

330
15 сентября 2017, 20:06

Есть таблицы:
customer

id name
 1 Nick  
 2 Bob  
 3 John

item

id type   price
 1 Ball     20  
 2 Flower   20  
 3 Circle   10  

result

id customer_id item_id
 1      1         1  
 2      2         2  
 3      3         1  
 4      1         1  

Нужно получить данные в виде:

Ball Flower Circle  <= вид товара  
 2      -     -     <=  а это отчет по каждому пользователю, в данном случае
                        Nick купил товар (1) 2 раза  
 -      1     -     <= а Bob купил товар (2) 1 раз, другие товары -  
 1      -     -
Answer 1
SET @sql_dynamic = (SELECT GROUP_CONCAT(DISTINCT CONCAT('SUM(IF(item_id = ', item_id,', 1, 0)) AS ', item_name)) 
    FROM (SELECT id AS item_id, type AS item_name  FROM `item` AS innerT ORDER BY id ASC) AS itemsT);
SET @sql = CONCAT('SELECT customer_id,', @sql_dynamic, ' FROM result GROUP BY customer_id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

Вся идея здесь Dynamic Pivot Table Using MySQL – Simple Logic

READ ALSO
Слушатель ScrollView вешается на все ScrollView

Слушатель ScrollView вешается на все ScrollView

В test1xml есть ScrollView в коде создаётся слушатель` scrollViewTest2 = (ScrollView) MainActivity

188
Заполнение RecyclerView элементов из JSONObject

Заполнение RecyclerView элементов из JSONObject

Что делаю: Я получаю все JSONObjects с моего сервера через websockets в MainActivity и кладу их в ArrayList<JSONObject>:

391