SQL Server中三个表两两关联 怎么实现查询??急!! SQL查询三个表中两两不同的数据

作者&投稿:淡是 (若有异议请与网页底部的电邮联系)

select a.*

from 学员表 a

inner join 校区表 b on a.所在学校=b.所在学校

inner join 管理员表 c on b.区域=c.区域

where c.用户名=@用户名 and c.密码=@密码

注意:最好把登陆和列表查询分开来做,因为无论是从安全还是程序实现的角度来看,都比较好。

扩展资料:

mysql三张表联合查询总结

一、表结构

1、图片表(存放图片)

CREATE TABLE `tb_pic` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增长 id',

`url` varchar(255) DEFAULT NULL COMMENT '图片 url 路径',

`description` varchar(255) DEFAULT NULL COMMENT '图片描述',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='图片表';

2、标签表(存放标签)

CREATE TABLE `tb_flag` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增长 id',

`name` varchar(255) DEFAULT NULL COMMENT '标签名称',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='标签表';

3、图片标签链接表(图片、标签中间表)

CREATE TABLE `tb_pic_flag_link` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增长 id',

`pic_id` int(11) DEFAULT NULL COMMENT '图片 id',

`flag_id` int(11) DEFAULT NULL COMMENT '标签 id',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='图片标签链接表';

二、实现的效果 

1、查询单张图片的描述 

效果: 

查询语句:

SELECT p.id, p.url, p.description, GROUP_CONCAT(f.`name`)

from tb_pic p, tb_pic_flag_link l, tb_flag f

where p.id = l.pic_id and l.flag_id=f.id and p.id=1;

2、查询所有图片的描述 

效果: 

查询语句:

SELECT p.id, p.url, p.description, GROUP_CONCAT(f.`name`)

from tb_pic p, tb_pic_flag_link l, tb_flag f

where p.id = l.pic_id and l.flag_id=f.id GROUP BY p.id;



select a.*

from 学员表 a

inner join 校区表 b on a.所在学校=b.所在学校

inner join 管理员表 c on b.区域=c.区域

where c.用户名=@用户名 and c.密码=@密码

扩展资料

在SQL Server中使用join on 【inner join on】关联多表查询

select cyb.id, xa.name 

from GeneShop.dbo.t_member_cyb cyb 

join GeneShop.dbo.xx_admin xa  on xa.id = cyb.hzjg_id 

join GeneShop.dbo.t_bg bg  on bg.cyb_id = cyb.id 

where (cyb.cybbm=402045 and bg.product_id = 121) or (cyb.cybbm=402070 and bg.product_id = 118)

具体情况若是判断逻辑关系是否正确可以使用如下代码: 

Select dbo.usersinfo.usercode,dbo.ryqxb.usercode,dbo.ryqxb.reportto,b.ename 

FROM DBO.UsersInfo,DBO.UsersInfo B,dbo.RYQXB 

where DBO.UsersInfo.UserCode=dbo.RYQXB.Usercode AND 

dbo.RYQXB.REPORTTO=B.Ename 

参考资料来源:百度百科 - SQL JOIN



如,现在有以下三张表:

管理员表:
用户名、密码、区域
学员表:
姓名、性别、学员号、所在学校
校区表:
所在学校、区域


现在要查询一条完整的信息,可以用这种方法写sql语句:

select * from 管理员表 a,学员表 b,校区表 c where a.区域=c.区域 and b.所在学校=c.所在学校;

注意:可以把*替换成自己想查的表的字段,但必须带上前缀,比如要查管理员表中的用户名,可以写做a.用户名。



首先,我建议你把登陆和列表查询分开来做,无论是从安全还是程序实现的角度来看,都是!
登陆后,用session存储区域信息,然后像以下查询
select 学员表.* from 学员表,校区表 where 学员表.所在校区 = 校区表.所在校区

当然,你非要直接做也行
select 学员表.* from 学员表,校区表,管理员表 where 学员表.所在校区=校区表.所在校区 and 校区表.区域 = 管理员表.区域 where 用户名 = ? and 密码 = ?
如果你是这样写的话,建议做一下安全性校验,不然,很容易被注入攻击

select a.*
from 学员表 a
inner join 校区表 b on a.所在学校=b.所在学校
inner join 管理员表 c on b.区域=c.区域
where c.用户名=@用户名 and c.密码=@密码

sql语句如何将三个表进行关联查询?~

试试这个:有疑问可HI我。
select a.*,B.DateOfRMI,C.venue,C.District
from (select CaseNo,max(DateRecived),BuildId,contractNo from A group by CaseNo)a,B,C
where B.CaseNo=a.CaseNo and C.CaseNo=a.CaseNo

select * from a
left join
(select a.`学号`,a.`科目`,a.`分数` from (select b.`学号`,b.`科目`,b.`分数` from b
union
select c.`学号`,c.`科目`,c.`分数` from c ) a
group by a.`学号`) b
on a.`学号`=b.`学号`

跟你说的不太一样 我是先把b,c表合并去重复(学号)再与a关联