MySql: 4 измерения в одном запросе - PullRequest
0 голосов
/ 27 февраля 2012

Я столкнулся со следующей проблемой, которую не могу решить.У меня есть одна таблица с именем "tbl_products", которая содержит список продуктов со следующими атрибутами:

  1. Страна (1 страна)
  2. Категория (3 категории)
  3. Диапазон цен (2 диапазона цен)
  4. Дата (дата, когда товар был продан)

Теперь я хочу построить следующую таблицу

столбцы: Строки даты:Страна, категория, диапазон цен

Столбцы помечены в месяц. Строки должны иметь следующую иерархию

1.Страна1

1.1 Cat1

1.1.1 Цена1

1.1.2 Цена2

1.2 Кат2

1.2.1 Цена1

1.2.2 Цена2

1,3 Кат3

1.3.1 Price1

1.3.2 Price2

Как мне построить SQL-запрос для получения этой информации?Ячейки таблицы состоят из count () [# проданных товаров].

1 Ответ

0 голосов
/ 27 февраля 2012

То, что вы просите, это, по сути, дерево, и гетерогенное. Это не то, что вы можете легко получить из запроса SQL. То, что реляционная алгебра хочет, чтобы вы действительно получили, выглядит примерно так:

country cat price
     US   1  2.39
     US   1  3.19
     US   2  7.49
...
     UK  99  2.80

Этот трюк заключается в том, что вы сначала заказываете по стране, по категории, по цене в последнюю Когда вы читаете данные, вы отслеживаете текущее значение каждого столбца. После изменения cat пришло время напечатать новый заголовок «Категория ...»; после изменения country пришло время напечатать новый заголовок «Страна ...».

Итак, запрос будет выглядеть примерно так:

select country, cat, price -- and whatever else
from tbl_products
where ... -- add any limiting clauses, or omit
order by country, cat, price;

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...