#php #mysql #sql
#php #mysql #sql
Вопрос:
У меня много проблем с этим запросом, но я действительно чувствую, что не должен. Я преобразовал свою проблему в более простую, чтобы ее было легче понять.
flowers_table
--------------- -----------
| flower_id | name |
--------------- -----------
| 1 | Tulips |
| 2 | Rose |
| 3 | Sun Flower|
| 4 | Orchids |
--------------- -----------
transaction_table
------------ ------------------
| trans_id | flower_id | sold|
------------ ------------------
| 1 | 1 | 2 |
| 2 | 1 | 10 |
------------ ------------ -----
Результат:
--------------- -----------
| flower_id | sold |
--------------- -----------
| 1 | 12 |
| 2 | 0 |
| 3 | 0 |
| 4 | 0 |
--------------- -----------
Это то, что я придумал.
SELECT flower_id.flower_table, COALESCE(SUM(transaction_table.sold), 0) AS sold
FROM flowers_table, transaction_table
Where flowers_table.flower_id = transaction_table.flower_id
GROUP by flower_id
Комментарии:
1. Мне кажется, что это правильно. Только
flower_id
1 проданный товар. В чем вопрос?2. Удивительно, но это не даст результата, вот почему я чесал голову. Насколько я помню, строки, отсутствующие в transaction_table, не отображаются из-за объединения.
Ответ №1:
SELECT flower_id.flower_table, COALESCE(SUM(transaction_table.sold), 0) AS sold
FROM flowers_table LEFT JOIN transaction_table on flowers_table.flower_id = transaction_table.flower_id
GROUP by flowers_table.flower_id
Комментарии:
1. Аааа, я изначально пробовал это, но потерпел неудачу. Что я сделал, так это перевернул, какие таблицы были по обе стороны от «left join». Большая любовь.