SELECT
ISBN, CopyNo, DateOut
FROM
LOAN
WHERE
**Title** = (SELECT Title FROM Book WHERE Title LIKE '%Stuart Little%');
SELECT
ISBN, Title, YearPublish
FROM
Book
WHERE
**Name** = (SELECT Name FROM Author WHERE Name LIKE '%Pan Books%');
我似乎无法找到上述代码的任何问题。它一直说'#34;列名无效"当我把光标放在粗体项目上时。列确实存在,我试图刷新并打开和关闭程序:(我似乎无法解决这个问题。谢谢!
答案 0 :(得分:0)
“子查询”可能会返回多个记录,因此您不能使用“=”。改为使用“in”:
SELECT ISBN, CopyNo, DateOut FROM LOAN WHERE Title in (SELECT Title FROM Book WHERE Title LIKE '%Stuart Little%');
SELECT ISBN, Title, YearPublish FROM Book WHERE Name in (SELECT Name FROM Author WHERE Name LIKE '%Pan Books%');
答案 1 :(得分:0)
列存在,但这不是=
的工作方式。您需要使用关键字IN
而不是=
。以下是有关它的更多信息:http://www.techonthenet.com/sql/in.php ...
您也可以这样做(如果我正确理解了架构)......
SELECT ISBN, Title, YearPublish FROM Book, Author WHERE Name LIKE '%Pan Books%';
答案 2 :(得分:0)
就像你从不同的表中混合了一些列。您应该发布表结构以获得正确的答案。所以我猜 - LOAN
表没有TITLE
列。它似乎属于BOOK
表。我看到两个表中都存在ISBN
字段,因此您应该使用以下内容。请注意,您应该避免将=
与子查询一起使用,因为它可以返回多行并且您将收到错误。您应该使用IN
代替。
SELECT
ISBN, CopyNo, DateOut
FROM
LOAN
WHERE
ISBN IN (SELECT ISBN FROM Book WHERE Title LIKE '%Stuart Little%');
现在是你的第二个查询。我认为BOOK
表没有字段NAME
(谁的名字?)。我认为BOOK
表有AUTHOR_NAME
之类的东西?
然后它应该看起来像
SELECT
ISBN, Title, YearPublish
FROM
Book
WHERE
AUTHOR_NAME LIKE '%Pan Books%';