SELECT 书籍信息.书籍名称, 书籍信息.出版社名称
FROM 书籍信息
WHERE 书籍信息.书籍编号 = ALL
(SELECT 书籍编号
FROM 借还书信息
WHERE 读者编号 =
(SELECT 读者编号
FROM 读者信息
WHERE 读者姓名 = '张三'))
INTERSECT
SELECT 书籍信息.书籍名称, 书籍信息.出版社名称
FROM 书籍信息, 书籍类别
WHERE 书籍信息.书籍类别 = 书籍类别.类别编号 AND 书籍类别.类别名称 = '自然科学类'
(问题:查询张三借阅过的全部’自然科学类’书籍名称和出版社名称)
上述语句错在哪,在SQL SERVICE2005上搞了很久就是没结果,各位帮帮忙咯
FROM 书籍信息
WHERE 书籍信息.书籍编号 = ALL
(SELECT 书籍编号
FROM 借还书信息
WHERE 读者编号 =
(SELECT 读者编号
FROM 读者信息
WHERE 读者姓名 = '张三'))
INTERSECT
SELECT 书籍信息.书籍名称, 书籍信息.出版社名称
FROM 书籍信息, 书籍类别
WHERE 书籍信息.书籍类别 = 书籍类别.类别编号 AND 书籍类别.类别名称 = '自然科学类'
(问题:查询张三借阅过的全部’自然科学类’书籍名称和出版社名称)
上述语句错在哪,在SQL SERVICE2005上搞了很久就是没结果,各位帮帮忙咯
SELECT 书籍信息.书籍名称, 书籍信息.出版社名称
FROM 书籍信息
WHERE 书籍信息.书籍编号 in
(SELECT 书籍编号
FROM 借还书信息
WHERE 读者编号 =
(SELECT 读者编号
FROM 读者信息
WHERE 读者姓名 = '张三'))
INTERSECT
SELECT 书籍信息.书籍名称, 书籍信息.出版社名称
FROM 书籍信息, 书籍类别
WHERE 书籍信息.书籍类别 = 书籍类别.类别编号 AND 书籍类别.类别名称 = '自然科学类'
from 书籍信息, 书籍类别
WHERE 书籍信息.书籍类别 = 书籍类别.类别编号 AND 书籍类别.类别名称 = '自然科学类'
and 书籍信息.书籍编号 in
(SELECT 书籍编号
FROM 借还书信息
WHERE 读者编号 =
(SELECT 读者编号
FROM 读者信息
WHERE 读者姓名 = '张三'))
SELECT A.书籍名称 ,
A.出版社名称
FROM 书籍信息 A
Inner JOIN 书籍类别 B ON A.书籍类别 = B.类别编号
Inner JOIN 借还书信息 C ON A.书籍编号 = C.书籍编号
Inner JOIN 读者编号 D ON C.读者编号 = D.读者编号
WHERE B.类别名称 = '自然科学类'
AND D.读者姓名 = '张三'
--也可
SELECT A.书籍名称 ,
A.出版社名称
FROM 书籍信息 A
Inner JOIN 借还书信息 B ON A.书籍编号 = B.书籍编号
where exist(select 1 from 读者编号 D where B.读者编号 = D.读者编号 and D.读者姓名 = '张三') and
exist(select 1 from 书籍类别 C where A.书籍类别 = C.类别编号 and C.类别名称 = '自然科学类'')