Здесь структура БД:
turns DB Table
+-----------+-------------+------------+------------+----------------+
| turnNumber| userId | locationId | status | itemsPurchased |
+-----------+-------------+------------+------------+----------------+
| 32 | 1 | 1 | 1 | 20 |
| 33 | 2 | 1 | 0 | 0 |
+-----------+-------------+------------+------------+----------------+
locations DB Table
+-----------+---------+---------+
| id | Address | ZIPCode |
+-----------+---------+---------+
| 1 | ... | 12345 |
| 2 | ... | 67890 |
+-----------+---------+---------+
Я пытаюсь получить данные о каждом местоположении (Адрес, ZIPCode ...) + количество ожидающих оборотов (со статусом 0) для каждого местоположения + сумма купленных предметовза местоположение (для всех ходов, даже если их состояние равно 1)
Здесь мой запрос:
SELECT
l.*,
COUNT(t.id) AS turns,
SUM(IF(t.itemsPurchased > 0, t.itemsPurchased, 0)) AS items
FROM turns t RIGHT OUTER JOIN locations l
ON t.locationId = l.id
WHERE t.status = 0 AND
l.ZIPCode = XXXX
GROUP BY l.id
Дело в том, что когда я ставлю условие t.status, он не получает данные о местоположении, когдав таблице ходов нет хода со статусом 0, также, даже если это произойдет, я полагаю, что количество купленных предметов будет считаться только за ходы со статусом 0, а не за все ходы.
Мне интересно, есть ли способполучить все данные в одном запросе, пожалуйста, помогите!
Редактировать:
Ожидаемый результат будет следующим:
+-----------+-------------+------------+------------+----------------+
| id | Address | ZIPCode | turns | itemsPurchased |
+-----------+-------------+------------+------------+----------------+
| 1 | ... | 12345 | 1 | 20 |
+-----------+-------------+------------+------------+----------------+