SQL группировать из группы? - PullRequest
1 голос
/ 10 февраля 2011

Допустим, у меня есть 3 таблицы: клиенты, оружие и заказы.Я хочу создать таблицу, в которой для каждого покупателя мне нужно отобразить количество товаров, которые он / она купил в каждой категории (пистолет, пистолет и т. Д.) И общее количество оружия?Это реализуемо, используя только SQL-запрос?Могу ли я реализовать это без подзапроса, потому что я намерен использовать SQL CE?

Таблицы имеют следующую структуру: заказчики (идентификатор, имя), оружие (идентификатор, тип_оружия), заказы (cust_id, arms_id, количество)

И я хочу получить это:

Name       | Order(w_type) |    Quantity  |   Total
-----------+---------------+--------------+-----------
John Smith |   Guns        |     3        |   7
John Smith |   Pistols     |     4        |   7
-----------+---------------+--------------+-----------
Jane Doe   |   Guns        |     5        |   14
Jane Doe   |   Pistols     |     7        |   14
Jane Doe   |   Cannons     |     2        |   14

или (еще лучше)

Name       |   Order       |    Quantity  |   Total
-----------+---------------+--------------+-----------
John Smith |   Guns        |     3        |   
John Smith |   Pistols     |     4        |   
-----------+---------------+--------------+-----------                                         
                                              7   
-----------+---------------+--------------+-----------
Jane Doe   |   Guns        |     5        |   
Jane Doe   |   Pistols     |     7        |   
Jane Doe   |   Cannons     |     2        |   
-----------+---------------+--------------+-----------
                                              14 

Спасибо.

1 Ответ

0 голосов
/ 10 февраля 2011

В CE нет аналитической функции (например, SUM () OVER), которая может дать вам первый результат.

Если ваши предполагаемые («даже лучшие») результаты - 2-е, что даже не таблично, вам нужно запустить два запроса; один для таблицы и один для суммы. Либо так, либо собирайте сумму по мере того, как вы просматриваете таблицу результатов (по заказу человека).

...