求一条多表查询的sql语句

t_kong 发布于 2013/08/15 11:18
阅读 251
收藏 0

如题:求一条关于多表查询的sql语句

具体有三个表,如下:

1、book(图书表)

b_name(书名) b_writer(作者) b_publisher(出版社编号) b_language(语言编号)
AAA a 101 e
BBB b
CCC c 102
DDD d c

2、publisher(出版社表)

p_id(出版社编号) p_name(出版社名称)
101 清华大学出版社
102 北京教育出版社

3、languages(语言表)

l_id(语言编号) l_name(语言名称)
c 中文
e 英文

目的:就是将 book(图书表)的所有记录读出。

但是读出的形式是

书名 作者 出版社 语言
AAA a 清华大学出版社 英文

自己想到用:select b_name as 书名,b_writer as 作者,p_name as 出版社,l_name as 语言 from book,publisher,languages where p_id=b_publisher and l_id=b_language

但是,只有一条记录,没有查询到所有的记录,就是对于book的“出版社编号”、“语言编号”两个字段,有空的,都查询不了。请问,如何才能将所有的记录查询出来?

加载中
0
铂金胖子
铂金胖子

试试这个:

select b_name, b_writer,
	( select p_name from publisher p where p.p_id = b.b_publisher ) as 出版社 ,
	( select l_name from languages l where l.l_id = b.b_language ) as 语言
from book b

t
t_kong
可以....谢谢!
0
小银
小银

用left join 

试试这个查询语句:

select b.b_name as 书名,b.b_writer as 作者,p.p_name as 出版社,l.l_name as 语言 from book b left join publisher p on b.b_publisher = p.p_id left join languages l on b.b_language = l.l_id

t
t_kong
可以.....谢谢,学习了!
0
铂金小虫
铂金小虫
一般都用2楼的吧,第一种不太常见。
t
t_kong
这样子吗??......当时一楼来得快嘛....所有.... 多谢提醒...
0
毛祥溢
毛祥溢
一楼的写法 实际上是内连接的一种。二楼的写法是标准的
0
铂金胖子
铂金胖子

平常的数据分析我都用第一种方式,因为简单,哈哈。

其实第二种才是标准的方法。

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部