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

Wyświetlać kolumnę rozmiaru jako wiersz dla każdego produktu kolorowego w powiązanej tabeli?

Brak polecenia PIVOT (MySQL tabele przestawne (przekształcanie wierszy w kolumny) ) w MySQL, więc Twoje zapytanie będzie statyczne dla rozmiaru. Dlatego lepiej odłożyć to w aplikacji.

Pomyślałem, że jeśli masz tylko skończoną i małą domenę dla kolumny rozmiaru, możesz użyć następującego zapytania, które zamieściłem poniżej:

mysql> SELECT 
    ->      c.color as color,
    ->      SUM(IF(s.size = 32, o.amount, 0)) as '32',
    ->      SUM(IF(s.size = 34, o.amount, 0)) as '34',
    ->      SUM(IF(s.size = 36, o.amount, 0)) as '36',
    ->      SUM(IF(s.size = 38, o.amount, 0)) as '38'
    ->  FROM `colors` c
    ->  INNER JOIN `order` o
    ->  INNER JOIN `sizes` s
    ->      WHERE c.`id` = o.`color` and s.`id` = o.`size`
    -> GROUP BY color 
    -> ;
+-------+------+------+------+------+
| color | 32   | 34   | 36   | 38   |
+-------+------+------+------+------+
| blue  |    3 |    4 |    2 |    0 |
| red   |    1 |    0 |    0 |    0 |
+-------+------+------+------+------+
2 rows in set (0.04 sec)

Jak widać w warunkach IF używam wartości rozmiaru, czyli tego, co mam na myśli, pytanie jest statyczne. Zakładam, że wszystkie możliwe rozmiary to 32, 34, 36, 38.

Demo pracy @SQL Fiddle

Edycja:Jak mówię od początku Jeśli wartości rozmiaru są nieznane lub domena jest duża, lepiej odłożyć pracę w skrypcie serwera (np. PHP) nadal możesz użyć następującego zapytania do przetworzenia w skrypcie:

SELECT 
     c.color as color,
     s.size,
     o.amount  --Edit: added 
 FROM `colors` c
 INNER JOIN `order` o
 INNER JOIN `sizes` s
     WHERE c.`id` = o.`color` and s.`id` = o.`size`

Zobacz, jak to działa @skrzypce SQL .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz wiersz z tabeli lewego sprzężenia, w której spełnionych jest wiele warunków

  2. mysqli multiple query - ustawianie zmiennej generuje błąd logiczny/jak to pominąć?

  3. Błąd podczas wstawiania wartości typu danych blob do tabeli mysql

  4. Zapytanie było puste, błąd PHP

  5. Zapisywanie wzrostu i wagi użytkownika