求教,多个结果集一对多sql写法
交易流水表(a):主要字段:交易账户
卡帐对应表(b):卡号,账户号;(一卡可以多个账户)
对象关系表(c):账户号,行员号;(一个账户可以多个行员)
我现在是想要,通过A表拿到C表的行员(一卡对应多个账户的时候,我只要其中一个账户,且这个账户在对象关系表中有行员)
例如:“交易流水(a)”有100张卡,100张卡在“卡帐对应表(b)”有140个账户,140个账户在“对象关系表(c)”有200个行员,那么我需要的结果是100张卡对应的100个行员;
其中让我纠结不已的是,结果集一对多,再来个一对多情况下,我如何将最里面的那层筛选出一条来;
新手求教,可能描述不好,见谅,在线等。 SQL 一对多
[解决办法]
有200个行员,那么我需要的结果是100张卡对应的100个行员;
取 100个行员有什么标准,ID最大,日期最近?
[解决办法]
一个账户对应的多个行员中,取比重=100的,如果有多个,随便取一个:
表中必须有唯一标识的字段
贴建表及插入记录的SQL,及要求结果出来看看
[解决办法]
假设C表 行员号 唯一
select * from c a where not exists(select 1 from c where a.账户号=账户号
and a.行员号<行员号)
[解决办法]
仔细看看,A是C的别名
[解决办法]
select *
from a
inner join b on c.kh=b.kh
left join c c1 on b.zhdh=c1.zhdh
where not exists(select 1 from c where c1.账户号=账户号
and c1.行员号<行员号)
[解决办法]
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
[解决办法]
试试这个概念:
select a.cardno,
(select b.accno from b where a.cardno=b.cardno fetch first row only),
(select c.colno from b,c where a.cardno=b.cardno and b.accno = c.accno fetch first row only)
from a
[解决办法]
LZ貌似在写模型~
[解决办法]
distinct order by fetch first one rows only 这些都是处理一对多的好方法