求高手写一段SQL SERVER 语句,表连接查询的!!!

来源:百度知道 编辑:UC知道 时间:2024/06/05 09:02:41
有这样一个功能要求。
一个进销存软件。retjels表里记载着每张单据的单号和这张单据的总金额和收款方式(分为划卡和现金)。还有一个retmxls是记载着每张单据的明细,里边有成本金额。现在要的是 一个大表,要有retmxls的全部内容和retjels的收款方式。 两个表都有流水号, retmxls会有一条以上的流水号对应着retjels里边的一个流水号。

这个大表的数据条目数量要和retmxls的一样多哦。。
楼底的朋友,经仔细查证 确实存在一些总表里没有明细表里有流水号的数据。但我只想要明细表里的所有数据,后边加上一个总表的收款方式字段。
您的语句还是不行,多出来了一千多条呀。。retmxls里有15436条,那语句出来16642条。不过收款方式也不为空。
不论left还是right都不行都是多出来一千多条 retmxls里边是有重复流水号的 因为一个单子 会有好几个商品呀 retjels没有重复值 两个表均没有null流水号。奇怪吧。。
-----------------------------
没想到这个问题这么麻烦 +100分。 在retjels中确实存在重复流水号,一个单可能划卡划一部分现金缴一部分,这就是问题所在。该如何做,才能达到我预期的效果??

select retmxls.* ,retjels.收款方式 from retmxls,retjels
where retmxls.单号=retjels.单号

---------------------------------------------------------------------------------------
可能是因为你明细表里存在一单号,而总表里没这个单号
用下面这个能查出来,但是收款方式将会是null
select retmxls.* ,retjels.收款方式 from retmxls left outer join retjels on retmxls.单号=retjels.单号
-----------------------------------------------------------------------------------------
多出一千条?有流水号重复出现?还是有null流水号出现?
虽然感觉不太可能,把left outer join 改成right outer join 呢?
----------------------------------------------------------------------------------------
神奇,我是说查出来的16642条结果里面有没有重复的流水号或者null流水号,
retmxls里面重复了5次,结果里面重复了10次之类的。

用这个sql文查起来清楚点
select t1.*,t2.个数2 from
(select 流水号,count(*) as 个数1 from retmxls
group by 流水号
order by 流水号)t1,
(select 流水号,count(*) as 个数1 from
(select retmxls.* ,retjels.收款方式 from retmxls left outer join retjels on retmxls.流水号=retjels.流水号 )