200分求一条SQL语句,在线等!

来源:百度知道 编辑:UC知道 时间:2024/07/02 19:29:32
有3个表(ACC数据库)以下:

A表字段:
USERNAME ARTICLEINPUT
A11 B07
A12 B22
A13 B25

B表字段:(允许多条记录相同,也就是这两个字段内容不变,其他字段内容不同)
TID ARTICLEINPUT
5505 A11
5712 A12
5916 A13

C表字段:(字段内容唯一,无重复)
ID CLASSID FOLDERNAME
5505 10 XYZ001
5712 15 XYK007
5916 27 XYK005

条件为A表USERNAME=B表ARTICLEINPUT,B表TID=C表ID

要求查询结果为:
当A表ARTICLEINPUT=B07时,结果为:
ARTICLEINPUT FOLDERNAME LINK
B07 XYZ001 XX.ASP?ID=10
LINK =XX.ASP?ID=10这个是加上链接的,这个不用管也可以。

试试这个
Select DISTINCT
A.USERNAME,A.ARTICLEINPUT,B.TID,B.ARTICLEINPUT,C.ID,C.CLASSID,C.FOLDERNAME From A,B,C
where A.USERNAME=B.ARTICLEINPUT and B.TID=C.ID and A.ARTICLEINPUT='B07'

SELECT A.ARTICLEINPUT , C.FOLDERNAME , CONCATE("XX.ASP?ID=",C.CLASSID) LINK
FROM A,B,C
WHERE A.USERNAME = B.ARTICLEINPUT
AND B.TID = C.ID

上面是基本的SQL语法,CONCATE是字符串连接的函数,有的数据库系统是||运算符号。LINK是给计算字段取的别名,有的数据库系统要加一个AS。请你查询你的数据库系统的手册,相应的变更既可。

SELECT A.ARTICLEINPUT, C.FOLDERNAME
FROM (A INNER JOIN B ON A.USERNAME = B.ARTICLEINPUT) INNER JOIN C ON B.TID = C.ID
WHERE (((A.ARTICLEINPUT)="B07"));
其实你可以在ACCESS里面建立这样3个表,然后建立查询,条件你要相等的用线连接起来就可以了,然后选SQL视图就可以看到了。

select ARTICLEINPUT, FOLDERNAME, LINK = 'XX.ASP?ID='+CLASSID
from A表,C表,(select distinct TID, ARTICLEINPUT from B表) B表
where A表USERNAME=B表ARTICLEINPUT,B表TID=C表ID

用内连接吧
Select TableA.ARTICLEINPUT,TalbeC.FolderName From C As TableC I