Возможно ли создать следующий динамический SQL-запрос в MySQL? - PullRequest
0 голосов
/ 10 июля 2019

Учитывая эту таблицу sellsMySQL):

id | person   | state | amount
 1 |  Ringo   |   CA  |  3$
 2 |  Paul    |   CA  |  10$
 3 |  John    |   MA  |  2$
 4 |  Ringo   |   CA  |  6%   
 5 |  Ringo   |   MA  |  12$  

Нам нравится создавать SQL-код, чтобы получить для каждого person, какой он был последним количество, которое он продал в каждом штате - что-то вроде этого:

person | CA  |  MA 
 Ringo |  6$ |  12$
 Paul  |  10$|   -
 John  |   - |  2$

Нам также нравится, чтобы этот запрос был достаточно динамичным, поэтому, если будет новая запись с новым состоянием (например, TX), мы получимэто автоматически.

6 | George  | TX | 15$

В результате:

person | CA  |  MA   | TX
 Ringo |  6$ |  12$  | -
 Paul  |  10$|   -   | -
 John  |   - |  2$   | -
 George|   - |  -    | 15$

Мы попытались Group by с этим запросом:

select * from sells where id in(
   select max(id) from sells 
   group by person, state
 )

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

1 Ответ

0 голосов
/ 10 июля 2019

Вы можете получить все необходимые данные с помощью более простого SQL и отформатировать их в коде своего приложения, чтобы получить желаемый формат.

Таблица, в которой для каждой страны имеется одна строка на человекапотратил на:

id | person   | state | amount
 4 |  Ringo   |   CA  |  6$
 5 |  Ringo   |   MA  |  12$  
 2 |  Paul    |   CA  |  10$
 3 |  John    |   MA  |  2$

SQL-запрос:

SELECT id, person, state, amount
FROM sells
GROUP BY person, state
HAVING id = MAX(id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...