Mysql
 sql >> база данни >  >> RDS >> Mysql

Колоната за размер на дисплея като ред за всеки цветен продукт в свързаната таблица?

Няма команда PIVOT (MySQL обобщени таблици (преобразуване на редове в колони) ) в MySQL, така че вашата заявка ще бъде статична за размера. Ето защо е по-добре да отложите това в приложението.

Мислех, че ако имате ограничен и малък домейн за колона с размери, можете да използвате следната заявка, която публикувах по-долу:

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)

Както можете да видите в условията IF, аз използвам стойност на размера, което имам предвид, че въпросът е статичен. Предполагам, че всички възможни размери могат да бъдат 32, 34, 36, 38.

Работеща демонстрация @SQL Fiddle

Редактиране:Както казвам от самото начало. Ако стойностите на размера са неизвестни или домейнът е голям, тогава по-добре е да отложите основната работа в скрипта на вашия сървър (напр. PHP), но все пак можете да използвате следната заявка за обработка в скрипта:

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`

Вижте как работи @SQL fiddle .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете най-близката дата от таблицата на MySQL

  2. #1273 – Неизвестно съпоставяне:‘utf8mb4_unicode_520_ci’

  3. Какво е точното местоположение на таблиците на базата данни на MySQL в папката XAMPP?

  4. echo json масив в колона на phpMyAdmin ЧРЕЗ PHP

  5. INSERT SELECT заявка, когато една колона е уникална