很简单的,你只需要这定一个Reader的ID就可以了。
select ReaderName,BookName,PublishNamefrom 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 联合查询两个不同数据库中不同的表等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)