有3张 表 basicinfor ,guoshui ,dishui
现在要根据 ename 和 trtime 查询 guoshui 里面所有的字段,dishui 里面所有的字段,basicinfor 里面的units1,units2,units3三个字段。
3个表 中都有ename 这个字段。 guoshui ,dishui 中的ename 肯定来源basicinfor这个表,
guoshui 和dishui 有trtime 字段。现在有个问题 如果emane 这个条件 在guoshui里面没有 ,而在dishui 里面有的话,我想出来的记录是:
guoshui里面就显示空的,dishui 显示出满足条件的数据,而且不会出现重复的记录。我写的sql 结果却是 没有记录。
select b.units1,b.units2,b.units3,g.*,d.* from basicinfor b, guoshui g,dishui d where .....在线等,查询结果对了就结贴
现在要根据 ename 和 trtime 查询 guoshui 里面所有的字段,dishui 里面所有的字段,basicinfor 里面的units1,units2,units3三个字段。
3个表 中都有ename 这个字段。 guoshui ,dishui 中的ename 肯定来源basicinfor这个表,
guoshui 和dishui 有trtime 字段。现在有个问题 如果emane 这个条件 在guoshui里面没有 ,而在dishui 里面有的话,我想出来的记录是:
guoshui里面就显示空的,dishui 显示出满足条件的数据,而且不会出现重复的记录。我写的sql 结果却是 没有记录。
select b.units1,b.units2,b.units3,g.*,d.* from basicinfor b, guoshui g,dishui d where .....在线等,查询结果对了就结贴
解决方案 »
- SQL查询部门最高工资的员工号
- sqlserver有什么语句的优化工具吗?
- 求教
- 请教高手~急!!!!!
- 150分求SQL查詢語句!!!!!
- 使用SQL语句恢复备份数据库出现错误:因为数据库正在使用,所以未能获得对数据库的排它访问权。 RESTORE DATABASE 操作异常终止。
- 有几个表有相同的几个字段,我想用一条语句来查询这些相同字段的所有记录~如何实现?
- 如何让select语句只返回日期,而不要时间
- 新手上路———关于用数字建表名字的问题3Q~~
- 请高手指教
- 重复记录取值问题
- SQL SERVER 2008的数据库字段显示都是这样的-5.08472560068916E-07,如何让它显示成8位纯小数如0.00000005
dsid int;
codeid varchar;
ename varchar;
cjr float;
trtime varchar;
guoshui表
gsid int;
codeid varchar;
ename varchar;
zzspt float;
transtime varchar;basicinfor表
eid int;
ename varchar;
eaddress varchar;
units1 varchar;
units2 varchar;
units3 varchar;
一些字段省略了,关键的这些字段就够了,测试数据根据字段类型 随便填写无所谓的
insert into dishui varlues(2,'320013','得力纺织厂',5400.00,'2009-02')
insert into dishui varlues(3,'320014','实木有限公司',7800.00,'2009-02')
insert into dishui varlues(4,'320015','维维有限公司',2400.55,'2009-02')insert into guoshui varlues(1,'520010','机械厂',23444.99,'2009-02')
insert into guoshui varlues(2,'520012','得力纺织厂',454.00,'2009-02')
insert into guoshui varlues(3,'520013','实木有限公司',895.99,'2009-02')insert into basicinfor varlues(1,'机械厂','南京','古铜县','江宁县','江浦县')
insert into basicinfor varlues(2,'得力纺织厂','南京','古铜县','','')
insert into basicinfor varlues(3,'实木有限公司','南京','古铜县','','')
insert into basicinfor varlues(4,'维维有限公司','南京','古铜县','江宁县','江浦县')
insert into basicinfor varlues(5,'壳牌燃油','南京','古铜县','','')如果 查询 条件是“维维有限公司” 那么dishui 表出来数据,而guoshui里面的字段就显示空白,同时要显示basicinfor 表里面的units1 ,units2,units3
'古铜县','江宁县','江浦县'
from basicinfor b
left join guoshui g on b.ename = g.ename
left join dishui d on b.ename = d.ename
LEFT JOIN guoshui B
ON A.dsid = B.gsid
LEFT JOIN basicinfor C
ON A.dsid = C.eid
gsid int,
codeid varchar(50),
ename varchar(50),
zzspt float,
transtime varchar(50)
)create table basicinfor(
eid int,
ename varchar(50),
eaddress varchar(50),
units1 varchar(50),
units2 varchar(50),
units3 varchar(50),
)insert into dishui values(1,'320012','机械厂',3400.99,'2009-02')
insert into dishui values(2,'320013','得力纺织厂',5400.00,'2009-02')
insert into dishui values(3,'320014','实木有限公司',7800.00,'2009-02')
insert into dishui values(4,'320015','维维有限公司',2400.55,'2009-02') insert into guoshui values(1,'520010','机械厂',23444.99,'2009-02')
insert into guoshui values(2,'520012','得力纺织厂',454.00,'2009-02')
insert into guoshui values(3,'520013','实木有限公司',895.99,'2009-02') insert into basicinfor values(1,'机械厂','南京','古铜县','江宁县','江浦县')
insert into basicinfor values(2,'得力纺织厂','南京','古铜县','','')
insert into basicinfor values(3,'实木有限公司','南京','古铜县','','')
insert into basicinfor values(4,'维维有限公司','南京','古铜县','江宁县','江浦县')
insert into basicinfor values(5,'壳牌燃油','南京','古铜县','','') select b.units1,b.units2,b.units3,g.*,d.*
from basicinfor b
left join guoshui g on b.ename = g.ename
left join dishui d on b.ename = d.ename
where b.ename ='维维有限公司units1 units2 units3 gsid codeid ename zzspt transtime dsid codeid ename cjr trtime古铜县 江宁县 江浦县 NULL NULL NULL NULL NULL 4 320015 维维有限公司 2400.55 2009-02(1 row(s) affected)
不好意思少了一张表
create table dishui(
dsid int,
codeid varchar(50),
ename varchar(50),
cjr float,
trtime varchar (50)
)
是不是这样写
select b.units1,b.units2,b.units3,g.* , d.*
from basicinfor b
left join guoshui g on b.ename = g.ename
left join dishui d on b.ename = d.ename
where (b.ename='维维有限公司' or g.ename='维维有限公司')
and (d.transtime='2009-02' or g.transtime='2009-02')
查询结果基本出来了,一会结贴
from basicinfor b
left join guoshui g on b.ename = g.ename
left join dishui d on b.ename = d.ename
where b.ename='维维有限公司' and (d.transtime='2009-02' or g.transtime='2009-02')最终答案这样应该没得错吧