Дамы и господа,
У меня следующая проблема в MySQL 5.1. Вот мой стол.
Sale | Store | Product | Discount
---------------------------------
1 | 1 | B | Yes
2 | 1 | B | Yes
3 | 1 | B | No
4 | 1 | D | Yes
5 | 1 | A | No
6 | 2 | A | No
7 | 3 | B | No
8 | 3 | B | No
9 | 1 | D | Yes
10 | 2 | A | No
Теперь это, конечно, очень неудобный способ организации данных, но именно так данные поступили (и будут поступать).
Мне нужно иметь возможность выдавать совершенно произвольный список типов продуктов (разделенных запятыми, если хотите); скажем A,B,C
. В конце концов, мне нужен список того, что магазин продал что. Вот промежуточный результат, чтобы его было легче понять.
Store | Product | Sales | Discounts
-----------------------------------
1 | A | 1 | 0
1 | B | 3 | 2
1 | C | 0 | 0
2 | A | 2 | 0
2 | B | 0 | 0
2 | C | 0 | 0
3 | A | 0 | 0
3 | B | 2 | 0
3 | C | 0 | 0
В конце концов мне нужно следующее:
Store | Product types sold | Discounts given on product types:
-------------------------------------------------------------
1 | 2 | 1
2 | 1 | 0
3 | 1 | 0
В третьем столбце указано, какому количеству проданных (и запрошенных) типов продуктов была предоставлена хотя бы одна скидка.
Я пробовал все виды динамических запросов на создание кросс-таблиц (да, я видел их все), но у меня недостаточно умственной оперативной памяти, чтобы обернуть все вокруг за один раз. Как бы вы подошли к этому наиболее эффективным способом? Временные таблицы / хранимые процедуры и т. Д. В порядке, грубые наброски идей очень приветствуются. Спасибо!