MySQLi считает группы из нескольких столбцов - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть таблица билетов на несколько концертов шоу-шоу.в основном это выглядит следующим образом ...

+----+---------------+--------------+-----------+
| ID | ticket_holder | ticket_buyer | show_date |
+----+---------------+--------------+-----------+

ticket_holder и ticket_buyer оба идентификаторы пользователей

Если бы я хотел подсчитать общее количество билетов, которое имеет один держатель, я мог бы сгруппироватьэтим держателем и подсчитайте количество строк, но я хочу больше статистики, чем это.

Я хочу знать общее количество купленных билетов пользователя, сколько у него в руках и сколько шоу он купил билетов.

+------+---------+--------+-------+
| USER | HOLDING | BOUGHT | DATES |
+------+---------+--------+-------+
| 1    | 12      | 24     | 7     |
+------+---------+--------+-------+
| 2    | 3       | 4      | 2     |
+------+---------+--------+-------+
| 3    | 1       | 2      | 1     |
+------+---------+--------+-------+

возможно ли поместить все это в запрос или мне нужно сделать что-то php, чтобы это произошло?

1 Ответ

0 голосов
/ 04 декабря 2018

Я бы сделал это в нескольких запросах.Вы не можете группировать по или ticket_holder или ticket_buyer, как хотите, в одном запросе.Если вы попробуете GROUP BY ticket_holder, ticket_buyer, он сгруппирует по обоим столбцам, что не то, что вам нужно.

SELECT ticket_holder, COUNT(*) AS tickets_held
FROM `a table of tickets` GROUP BY ticket_holder;

SELECT ticket_buyer, COUNT(*) as tickets_bought 
FROM `a table of tickets` GROUP BY ticket_buyer;

SELECT ticket_buyer, COUNT(DISTINCT show_date) AS shows_bought
FROM `a table of tickets` GROUP BY ticket_buyer;

Не каждая задача должна быть выполнена в одном запросе!Составной частью SQL является то, что он должен использоваться неким языком приложения, и вы должны обрабатывать форматирование и отображение в приложении.

...