Php 使用联接时,如果找不到行,则SQL求和为0

Php 使用联接时,如果找不到行,则SQL求和为0,php,mysql,sql,Php,Mysql,Sql,我在这个问题上遇到了很多麻烦,但我真的觉得我不应该这么做。我把我的问题转换成了一个更简单的问题,这样更容易理解 flowers_table +---------------+-----------+ | flower_id | name | +---------------+-----------+ | 1 | Tulips | | 2 | Rose | | 3 | Sun Flower|

我在这个问题上遇到了很多麻烦,但我真的觉得我不应该这么做。我把我的问题转换成了一个更简单的问题,这样更容易理解

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

对我来说似乎是对的。只有
flower\u id
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