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

MySQL — problem z dynamicznym grupowaniem tabel przestawnych

Poniższy kod SQL może być punktem wyjścia do rozwiązania problemu:

SELECT
  es.employee_id,
  CONCAT(e.first_name, " ", e.last_name) AS employee,
  MAX(IF (es.skill_id = 1, es.date_trained, null)) AS '1',
  MAX(IF (es.skill_id = 2, es.date_trained, null)) AS '2',
  MAX(IF (es.skill_id = 3, es.date_trained, null)) AS '3'
FROM
  employee_skills es
  LEFT JOIN employees e ON es.employee_id = e.id
GROUP BY
  es.employee_id 

Wynikiem jest taka tabela przestawna:

| employee_id | employee   | 1          | 2          | 3          |
+-------------+------------+------------+------------+------------+
| 1001675     | Person Two | (null)     | 2016-07-02 | 2016-07-04 |
| 1006111     | Person One | 2016-07-01 | 2016-07-11 | (null)     |

Jeśli SQL jest tworzony dynamicznie, identyfikatory umiejętności można zastąpić nazwą umiejętności. Istnieje również możliwość późniejszej wymiany identyfikatorów.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. meta_query, jak wyszukiwać za pomocą relacji OR i AND?

  2. przed wstawieniem wyzwalacza do wstawiania zduplikowanych wierszy do innej tabeli

  3. Konkatenacja kolumn zwraca Null Mysql - Php

  4. jak uzyskać wartość z zapytania wybierającego w wyzwalaczu w mysql5?

  5. Błąd bind_param - Liczba elementów w ciągu definicji typu nie zgadza się z liczbą zmiennych wiązania