当前位置:主页>仓库管理软件> 列表

如何对一个表查询两次? 找销售管理

库存管理软件版1楼: 表A:
id name
1 小明
2 老王
3 老李
4 小晃
....
表B:
发信人id 收信人id 信内容
1 2 ddddd
1 3 sfdfd
2 4 sfdf
3 1 sfsdf
...
我现在只能得到一个人名,像这样:
select name, 信内容 from A, B where 发信人id *= A.id
这样只能得到发信人姓名,我想同时得到发信人和收信人的姓名,就是就说要对A表查询两次。该怎么作?

2楼: select name, b.信内容 from A
left join B b on b.发信人id *= A.id
left join B c on c.收信人id *= A.id 如销售管理

3楼: LZ你的这个表结构设计的有问题,表B至少要有个主键才行。
其实这个可以分成几个处理过程来看。
一:表B中用发信人id去表A中找到相应的姓名
二:表B中用收信人id去表A中找到相应的姓名
三:把一和二步骤取出来的数据合并(表B中同一行记录合并到一起),但是这里缺少了合并的条件,也就是我说的主键。

4楼: 这么简单嘛,吧表A看成两张表,A1,A2不就行了吗
select 信内容,A1.name,A2.name from 表B as b,表A as A1,表A as A2 where
A1.id=b.发信人id and A2.id=收信人id

5楼: select a.name as 发信人姓名, b.信内容,c.name as 收信人姓名 from A, B,A c where b.发信人id *= A.id
and b.收信人id *=c.id

6楼: select c.name Rname,a.name Sname,b.信内容 from 表A a inner join 表B b on a.id=b.发信人id inner join 表A c on c.id=b.收信人id

库存管理软件版7楼: 用视图呀.
先用视图查询一次, 再用Query查视图

8楼: 不好意思,刚刚说错了,其实可以写出来的,不过还是觉得你这样的表结构设计不合理
select A1.name as 发信人 , A2.name as 收信人, 信内容 from A as A1, B, A as A2 where b.发信人id = A.id and A2.id = B.收信人id

9楼: 唉,丢脸了:(

10楼: 谢谢各位