为什么我的查询只抓取3个项目而不是预期的金额?

时间:2015-10-02 15:45:10

标签: php mysql

这是我的查询。

$request = "SELECT
            required_items.id,
            required_items.name,
            required_items.required_amount AS Amount_Required,
            COALESCE(SUM(donations.donation_amount),0) AS Amount_Donated
            FROM required_items 
LEFT JOIN donations ON donations.item_id=required_items.id 
GROUP BY item_id ASC";

$stmt = $db->query($request);
$item_info = $stmt->fetchAll();

我只收到了我的" required_items"中的五个项目中的三个。数据库。我打算用它来取出所有这些。我能做错什么?我很难过。

经过进一步测试后,我注意到这些项目没有与" item_id"按升序排列。

编辑: 这是我解决这个问题的小提琴: http://sqlfiddle.com/#!9/7afc3/1/0

预期的结果是以与查询一起显示的方式列出数据库中的所有五个项目,而不是仅列出三个。

编辑:我在错误的表格中按列分组! " ITEM_ID"需要更改为" required_items.id"。

1 个答案:

答案 0 :(得分:2)

您正在对仅选择了3行的表进行分组(两个包含值,一个为null),您可以使用另一个表中的字段:

$request = "SELECT
            required_items.id,
            required_items.name,
            required_items.required_amount AS Amount_Required,
            COALESCE(SUM(donations.donation_amount),0) AS Amount_Donated
            FROM required_items 
LEFT JOIN donations ON donations.item_id=required_items.id 
GROUP BY required_items.id ASC"; // <- MODIFIED HERE

$stmt = $db->query($request);
$item_info = $stmt->fetchAll();