Mysql
 sql >> Baza danych >  >> RDS >> Mysql

używanie funkcji pivot w mysql do tworzenia tabeli apriori

Dla zapytania GROUP_CONCAT; w twoim przypadku stmt, odnosisz się do tabeli produktów jako product samo. Ale w zapytaniu sprzężenia odwołujesz się do tabeli produktów jako alias p . Ponieważ pierwsze zapytanie group_concat jest częścią zapytania join, musisz zachować takie same aliasy tabeli.(wprowadzono zmiany w wierszu 5)

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'count(case when p.name = ''',  
      product.name,
      ''' then 1 end) AS ',
      replace(product.name, ' ', '')
    )
  ) INTO @pivotsql
from product;

SET @sql = CONCAT('SELECT omd.order_match_id, ', @pivotsql, ' from order_match_detail omd
left join order_match om
  on omd.order_match_id = om.id
left join product p
  on omd.product_id = p.id
  where om.order_status_id in (4, 5, 6, 8)
group by omd.order_match_id');

PREPARE stmt FROM @sql;
EXECUTE stmt;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Święty Graal czyszczenia wejścia i wyjścia w php?

  2. Symfony2:Lista miast według kraju

  3. mysql 12 godzin do 24 godzin konwersja czasu

  4. Jak mogę uzyskać autoinkrementowany identyfikator, gdy wstawiam rekord do tabeli za pomocą jdbctemplate?

  5. Przydatna klasa bazy danych PHP