SUM Group BY与JOIN SQL错误输出

时间:2017-08-16 10:56:07

标签: mysql mysqli

我有2张桌子;当我使用group尝试join时,输出不符合预期。

以下是表格:

表1
table1

表2
table2

以下是代码:

SELECT *, SUM(total_jual) AS totaljual, SUM(total_beli) AS totalbeli 
FROM penjualan 
JOIN pembelian ON penjualan.tgl_penjualan = pembelian.tgl_pembelian 
GROUP BY penjualan.tgl_penjualan

我想要这个输出:**2017-08-16** **4404000** **18051000**
怎么做到这一点?

3 个答案:

答案 0 :(得分:1)

加入时,每个排列都会得到一行,即连接条件匹配的每个组合的一行。这会导致示例中的四行重复每个值。尝试没有GROUP BY的选择,你会看到。为了获得正确的总和,您需要通过第二个表中的聚合结果加入:

SELECT penjualan.tgl_penjualan, 
       SUM(total_jual) AS totaljual, 
       max(b.total_beli) AS totalbeli 
FROM penjualan 
JOIN (SELECT tgl_pembelian, sum(total_beli) AS total_beli FROM pembelian
      GROUP BY tgl_pembelian) AS b 
  ON penjualan.tgl_penjualan = b.tgl_pembelian 
GROUP BY penjualan.tgl_penjualan;

任何语法错误的应用。我还没有测试过sql。

答案 1 :(得分:0)

您可以尝试以下查询:

SELECT penjualan.tgl_penjualan, SUM(total_jual) AS totaljual, SUM(total_beli) AS totalbeli 
FROM penjualan JOIN pembelian ON penjualan.tgl_penjualan = pembelian.tgl_pembelian 
GROUP BY penjualan.tgl_penjualan;

答案 2 :(得分:0)

试试这个

SELECT top 1 penjualan.tgl_penjualan,SUM(total_jual) AS totaljual,b.total_beli AS totalbeli 
FROM penjualan 
INNER JOIN (SELECT tgl_pembelian, sum(total_beli) AS total_beli 
            FROM pembelianGROUP BY tgl_pembelian) AS b 
ON penjualan.tgl_penjualan = b.tgl_pembelian 
GROUP BY penjualan.tgl_penjualan,b.total_beli;
相关问题