Так что мне нужно получить количество элементов, найденных в разных учетных записях пользователей. В основном, элементы хранятся в списках, которые затем сохраняются в учетных записях. Проблема в том, что элементы имеют list_id, но не account_id, хотя списки имеют account_id. Если бы существовал также account_id для предметов, это было бы легко, но это выглядит примерно так:
account -> list -> item
Так что прямой связи между аккаунтом и предметом нет. Я знаю, что это не оптимально, но я не тот, кто разработал базу данных. Мне просто нужно с этим поработать.
Вот как структурированы данные:
account (Where the account_id comes from)
----------------------------------
| account_id | account_name| ... |
|------------|-------------|-----|
| 1 | account_1 | ... |
| 2 | account_2 | ... |
| 3 | account_3 | ... |
| 4 | account_4 | ... |
| 5 | account_5 | ... |
| ... | ... | ... |
----------------------------------
list (Where the list_id comes from. Also linked to the account table by the account_id FOREIGN KEY)
------------------------------------------
| list_id | list_name | account_id | ... |
|---------|-----------|------------| ... |
| 1 | list_1 | 1 | ... |
| 2 | list_2 | 1 | ... |
| 3 | list_3 | 2 | ... |
| 4 | list_4 | 2 | ... |
| 5 | list_5 | 3 | ... |
| ... | ... | ... | ... |
------------------------------------------
item (Where the items come from. Also linked to the list table by the list_id FOREIGN KEY)
---------------------------------------
| item_id | item_name | list_id | ... |
|---------|-----------|---------|-----|
| 1 | item_1 | 1 | ... |
| 2 | item_2 | 1 | ... |
| 3 | item_3 | 2 | ... |
| 4 | item_4 | 2 | ... |
| 5 | item_5 | 3 | ... |
| ... | ... | ... | ... |
---------------------------------------
What I manage to get (I've added the list_id even though it's uncessary to show you that there is an
item_qty count for each list)
----------------------------------
| account_id | list_id| item_qty |
|------------|--------|----------|
| 1 | 1 | 6 |
| 1 | 2 | 1 |
| 1 | 3 | 5 |
| 2 | 4 | 2 |
| 2 | 5 | 2 |
----------------------------------
What the desired result is.
-------------------------------
| account_id | item_qty | ... |
|------------|----------|------
| 1 | 12 | ... |
| 2 | 4 | ... |
| ... | ... | ... |
-------------------------------
Вот код, который возвращает мне текущие результаты:
SELECT list.account_id, COUNT(*) AS item_qty
FROM item
JOIN list ON list.list_id = item.list_id
GROUP BY items.list_id
Вот что я пытался получить желаемые результаты:
SELECT * FROM (
SELECT list.account_id as id, COUNT(*) AS item_qty
FROM item
JOIN list ON list.list_id = item.list_id
GROUP BY items.list_id ) as t
GROUP BY id
Однако, когда я делаю это, все, что я получаю, это счет из одного списков. Поэтому, если в списке 1 из учетной записи 1 есть 3 элемента, в списке 2 из учетной записи 1 есть 4 элемента, я получаю счет 3, даже если я группирую списки по учетной записи.
Мне нужно получить счет все элементы в списке, затем количество элементов в списке всех учетных записей.