求SQL多表查询公式。从A表查询结果去关联B表里面的字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求SQL多表查询公式。从A表查询结果去关联B表里面的字段相关的知识,希望对你有一定的参考价值。

1.select * from card_cardchange
where rdatetime > '2011-05-1' 得出 工号、换卡记录等字段
2.select * from file_personnel 得出 工号、姓名 等字段
如何将这两个A表结果(1),和 B表结果(2)放在一起,最终得出工号、姓名、换卡记录
我不太懂。我把原始环境在说明下。
1.select personnelid ,rdatetime ,changereason ,operatorid from card_cardchange
where rdatetime > '2011-05-1' and changereason =6
2.select personnelid ,pname from file_personnel
上面字段都是我要的。
如何,用一句SQL语句搞定,成一个结果
就是把2的,PNAME可以放在1的结果里面去。

card_cardchange 里面字段有 personnelid
file_personnel 里面字段有 personnelid 和 PNAME
两个personnelid 是相同的 ,这个就是关联。

参考技术A select 工号, file_personnel.姓名, card_cardchange. 换卡记录 from card_cardchange left join on card_cardchange .工号 = file_personnel.工号 参考技术B Select C.换卡记录,P.工号,P.姓名 From card_cardchange As C Inner Join file_personnel As P ON C.工号=C.工号 参考技术C 两个表有没有 关联呢?追问

card_cardchange 里面字段有 personnelid
file_personnel 里面字段有 personnelid 和 PNAME
两个personnelid 是相同的 ,这个就是关联。

追答

select c.personnelid ,c.rdatetime ,c.changereason ,c.operatorid,f.PNAME
from card_cardchange c
,file_personnel f
where f.personnelid = c.personnelid

追问

问下,c. 和 f. 是什么意思?

追答

c 和 f 是别名
如果你不习惯C 和 F 可以替换成下面语句
select card_cardchange.personnelid ,card_cardchange.rdatetime ,card_cardchange.changereason
,card_cardchange.operatorid,file_personnel.PNAME
from card_cardchange
,file_personnel
where file_personnel.personnelid = card_cardchange.personnelid

这样的SQL语句易懂但是看起来很乱。

追问

嗯,明白了。但是,还有个条件漏了。
就是我们第一条语句里面的 where rdatetime > '2011-05-1' and changereason =6
这个能加上去吗

追答

可以
select card_cardchange.personnelid ,card_cardchange.rdatetime ,card_cardchange.changereason
,card_cardchange.operatorid,file_personnel.PNAME
from card_cardchange
,file_personnel
where file_personnel.personnelid = card_cardchange.personnelid
and card_cardchange .rdatetime > '2011-05-1' and card_cardchange .changereason =6

本回答被提问者采纳

多表关联sql查询优化

select a from A a,B b where a.t=b.t

select a from A a where a.t in (select b.t from B b)

select distinct a.org_code,a.org_name from t_ORGANZATION a,T_DM_CDBP_ORGANZATION b where a.org_code=b.org_code;

select distinct a.org_code,a.org_name from t_ORGANZATION a where a.org_code in(select b.org_code from T_DM_CDBP_ORGANZATION b);

select distinct a.org_code,a.org_name from t_ORGANZATION a where EXISTS (select 1 from T_DM_CDBP_ORGANZATION b where a.org_code=b.org_code);

 

select

(*)1.523s

(1)1.459s

(t.id)1.36s

UNION ALL









以上是关于求SQL多表查询公式。从A表查询结果去关联B表里面的字段的主要内容,如果未能解决你的问题,请参考以下文章

sql多表连接查询问题

sql leftjoin多表查询,出现重复的数据,怎么办

sql多表关联查询

ORACLE中如何多表关联查询。如有A、B、C三张表,A表字段a和B表字段b以及C表字段c关联,写出查询语句

select 多表关联查询

sql多表查询的问题