sql多表联合查询问题

sql多表联合查询问题,第1张

很简单的,你只需要这定一个Reader的ID就可以了。

select ReaderName,BookName,PublishName

from Book,Reader,BorrowBook,PublishCompany

where BorrowBookReaderID=ReaderReaderID 

and BorrowBookBookID=BookBookID

and BookPublishID=PublishCompanyPublishID

and where ReaderReaderID=XXXX;

可能BorrowBook这个表里面还有status,你查看下。有的话你把status加上就好,不然你不知道读者借的书有没有归还。

如下两张表:

表A 表B

F F

A A

B B

C F

D G

E H

WHERE:

SELECT AF AS FA, dboBF AS FB

FROM dboA LEFT OUTER JOIN dboB ON dboAF = dboBF

WHERE AF = ' A '

AND:

SELECT AF AS FA, dboBF AS FB

FROM dboA LEFT OUTER JOIN dboB ON dboAF = dboBF

AND AF = ' A '

A A

B null

C null

D null

E null

可以看出使用 WHERE 条件会筛选连接查询的结果,但不影响返回的右表字段值;

使用 AND 不会对结果进行筛选,结果一定是包含了所有的左表记录,但是会影响

返回的右表字段值,如果 ON 后面的逻辑判断返回 true 显示右表值,为 false 则显示 null。

SELECT AF AS FA, dboBF AS FB

FROM dboA LEFT OUTER JOIN dboB ON dboAF = dboBF AND 1 = 1

A A

B B

C null

D null

E null

SELECT AF AS FA, dboBF AS FB

FROM dboA LEFT OUTER JOIN dboB ON dboAF = dboBF AND 1 = 2

A null

B null

C null

D null

E null

如果是 INNER JOIN, WHERE 和 AND 效果相同。

SELECT AF AS FA, dboBF AS FB

FROM dboA INNER JOIN dboB ON dboAF = dboBF

WHERE AF = ' A ' / AND AF = ' A '

可以,这个是最基本的查询方法,也是经常用到的。

方法如下:

select from table1,table2 where table1field1= table2field1

上面这句可以查询两个表中所有field1相等的数据

select 表名列名 from table1,table2 where table1field1= table2field1

上面这句可以查询两张表中相同field1项中‘表名’中‘列名’项的数据,上面查询字段自己加,但是要记得前面要加上'表名',因为存在相同字段的时候需要用表名来区别。

楼主试试吧~

create view_ticket as

select id,ticket from a group by id,ticket union

select id,ticket from b group by id,ticket union

select id,ticket from c group by id,ticket

首先,在每句里去掉重复的,这样能保证三个查询中,每个子查询无重复

然后union 本身就是能自动去重,也就是如果a,b,c中三个查询中有互相重复的数据,会过滤掉

顺便解释一下,union all是不会去重的

以上就是关于sql多表联合查询问题全部的内容,包括:sql多表联合查询问题、SQL连接查询AND和WHERE的不同、sql 联合查询两个不同数据库中不同的表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9810502.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存