左外连接sql无法正常工作

时间:2014-12-27 16:11:16

标签: android mysql sql sqlite select

在我的Android应用中,我有一个有两行感兴趣的数据库。

 table1          table2     
 |_id | name |   |_id | table1_id |amount

我希望有一个查询返回表1中扩充中的每一行,其中table2中每行的行数总和,其中table1_id对应于表1中的_id。这是到目前为止我想出了什么:

SELECT table1._id, table1.name, SUM(amount) 
FROM table1 LEFT OUTER JOIN table2 
USING(table1._id,table2.table1._id) ;

这个在SUM(金额)列中返回一行0,当表1完全为空时 (结果| - | - | 0 |)。当table1为空时,我希望结果完全为空。当table1中的特定行没有对应关系时,我希望它们只能用0增加。

有关改进查询的任何想法?

2 个答案:

答案 0 :(得分:1)

加入前你可以group by

SELECT          t1._id, t1.name, t2.sum_amount
FROM            table1 t1
LEFT OUTER JOIN (SELECT   table1_id, SUM(amount) AS sum_amount
                 FROM     table2 
                 GROUP BY table1_id) t2 
             ON t1._id = t2.table1_id;

答案 1 :(得分:0)

SELECT 
    table1._id, table1.name, SUM(IFNull(amount,0)) 
FROM
    table1 LEFT OUTER JOIN table2 
ON 
    table1._id = table2.table1._id