请教SQL语句-如何写

来源:百度知道 编辑:UC知道 时间:2024/09/24 19:13:03
如何写下面的sql语句
表1
日期 品名 条码号 数量
5月10日 X1 101 1
5月10日 X1 101 1
5月10日 X1 102 1
5月10日 X1 103 1
5月10日 X1 104 1

表2

日期 品名 条码号 数量
5月11日 X1 102 1
5月11日 X1 103 1
5月11日 X1 104 1
5月11日 X1 105 1

结果要做成这样子:
日期 品名 表1/表2差异条码号 数量
5月10日 X1 101 2
5月11日 X1 105 1
表1 和表2 里面就是条码号有差异的找出来。 表1里面有102 103 104 表2里面也有同样。就不要找出来。
101 和105是分别在两个表里面的。就找出来。数量101的是2 105的是1.

select c.日期,c.品名,c.条码号 as 表1/表2差异条码号,count(*) 数量
(select a.日期 日期,a.品名 品名,a.条码号 条码号 from 表1 a,表2 b where a.条码号<>b.条码号
union all
select a.日期 日期,a.品名 品名,a.条码号 条码号 from 表1 a,表2 b where a.条码号<>b.条码号) c

没有外键吗?

select s1.s_date,s1.s_name,s1.S_NO,count(s1.s_qty) from stock1 s1 where s1.S_NO not in (select s_no from stock2) group by S_NO,S_DATE,S_NAME
union
select s2.S_DATE,s2.S_NAME,s2.S_NO,count(s2.S_QTY) from stock2 s2 where s2.s_no not in (select s_no from stock1) group by S_NO,S_DATE,S_NAME;
两张表的s_date,s_name,s_no,s_qty 分别对应你的日期/品名/条码号/数量
我实在想不出别的好点的办法了- -#. 这个测试过,可以出来数据. 哪位还有优化点的可以分享出来看看

1、表1 检索
select 日期, 品名, 条码号 表1/表2差异条码号, 数量
from 表1 a
where a.条码号 not in (select 条码号 from 表2,表1 where 表1.条码号 =表2.条码号)

2、表2 检索
select 日期, 品名, 条码号 表1/表2差异条码号, 数量
from 表2 a
where a.条码号 not in (select 条码号 from 表2,表1 where 表1.条码号 =表2.条码号)

3、合并检索

select 日期, 品名, 条码号 表1/表2差异条码号, 数量