sql查询显示两个表的余额

时间:2014-03-23 13:11:07

标签: php mysql sql

实施例

table1 被视为购买

 barcode       articleno      Description      size
 0101010       500845-400     nike shoes       7
 10125         500845-400     nikeshoes        8
 0101010       500845-400     nike shoes       7
 0101010       500845-400     nike shoes       7
 1254          125456-700     nikeshoes        12  

表2 被视为转移库存

 barcode       articleno      Description      size
 0101010       500845-400     nike shoes       7 
 10125         500845-400     nikeshoes        8

输出: balace股票

 barcode       articleno      Description      size
 0101010       500845-400     nike shoes       7 
 0101010       500845-400     nike shoes       7 
  1254         125456-700     nikeshoes        12  

1 个答案:

答案 0 :(得分:0)

有一种方法可以做到这一点。我们的想法是从给定条形码/大小组合的第一个表中删除n行(我假设这是行的唯一标识符)。 n的值是第二个表中的行数。

以下查询通过删除基于n的第一个id行来完成此操作。它过滤掉前面ID数小于count的行:

select p.*
from purchasing p left outer join
     (select barcode, size, count(*) as cnt
      from transfers t
      group by barcode, size
     ) bc
     on p.barcode = bc.barcode and p.size = bc.size
where coalesce(cnt, 0) < (select count(*)
                          from purchasing p2
                          where p2.barcode = p.barcode and
                                p2.size = p.size and
                                p2.id <= p.id
                         );