从你写的表结构看,表D表示个A表、B表、C表的关系(除非表D还有其他三张表没有的信息),不需要加入关联的
select
from A
left join B on A_user_id=B_id
left join C on A_device_id=C_idselect
ano as 学生ID
,aname as 学生名字
,csubname as 科目名称
, bscore as 学生成绩
from A a left join B b on ano = bno left join C on bsubid = csubid
结构化查询语言(StructuredQueryLanguage)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。
结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
恩,这个有2种写法,一种是:select aa1,aa2,aa3,bb2,cc2,dd2
from a,b,c,d
where aa1=bb1 and bb1=cc1 and cc1=dd1
第二种是:
select aa1,aa2,aa3,bb2,cc2,dd2
from a inner join b on aa1=bb1
inner join c on bb1=cc1
inner join d on cc1=dd1
楼主2种都试一下,有啥问题,在联系!
补充:
可以不用括号的,就是inner join 是在sql server 2000 中的用法,用第一种也是可以的。四张表联合查询呗。
假设四张表为A,B,C,D
你要查A表某时间段内的ID,在BCD三张表内的数据。
那么有一个问题,就是你要的是什么结果,三张表的字段一样吗?
如果三张表的字段一样,那么就一张一张查,然后union all就可以了。
如果不是而是要的B的一个字段,C表的几个字段,D表的几个字段,那么就是四张表联合查询就可以了,只是where后面的条件写的多一些。
比如
where aid=XXXXX(子查询) and aid=bid and bid=cid and cid=did and aid=cid and aid=did and bid=did
说白了就是为了保险起见,你要写6个,两两都相等,这样就绝对不会有问题(其实写4个(分别和aid相等),或者递归相等可能也对,但是写六个绝对不会有错,所以我就写了六个,具体的写法要只能去试),前面的select就是aid ,b某某字段,c某某字段,XXXXXXX之类的就可以了select
userId,,realName,mark,courseName,grade,Sumgrade
from
(select
userId,realName,mark
from
A
join
B
on
AUserId=BUserId)
one
join
(select
userId,
courseName,grade
from
C
join
D
on
CcourseId=DcourseId)
two
on
oneuserId=twouserId
可以用谓词或联结实现:
连接实现:
selectfrombjoinaonbid=aidwhereab=21
联结实现的条件是两表id来自同一值域,表示意义相同在连接时其实两可以作成一个表的:
也就是
id,ab,ac,bbbc
但由于空值的问题,导致了部分依赖所以才会拆分成两个表的
使用谓词实现:
selectfrombwhereidin(selectidfromawhereab=21)
这个可以实现两表id来自同一值域,但表示意义不同的情况也就是说两表中的id有无关性
相比较而言,连接的方式更快一些,但这种情况是两表来自同一值域,且意义相同,如果不是这种情况,可能得不到你正确的值的而使用谓词不管意义是否相同,都可以得到正确的值
玩数据库必须知道这两个表是否具有相关性,也就是设计时的意义,否则优化词句什么的都没有办法去做的!
有几种方式可以实现你的这个需求
1使用表关联
SELECTFROM表2JOIN表1ON(表2ID=表1列1);
2使用IN
SELECTFROM表2WHEREIDIN(SELECT列1FROM表1);
3使用EXISTS
SELECTFROM表2
WHEREEXISTS(SELECT1FROM表1WHERE表2ID=表1列1);
selectfromt2leftjoint1ont2ID=t1列1wheret1需要啥条件andt2需要啥条件
selectfrom表2where某列in(select列1from表1)andid=1
用最简单的C/S架构去做,百度一下教程大把。可以用 access数据库+IIS网页服务端+net服务端开发做。我也是新手,前不久做过这样的小项目,花了两三天做完了,部署在企业内网的,数据查询系统。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)