gpt4 book ai didi

sql - 子查询返回多行 SQL

转载 作者:行者123 更新时间:2023-12-04 22:14:17 24 4
gpt4 key购买 nike

我已经执行了一段代码

SELECT CASE b.ON_LOAN
when 'Y' then
'In Lib'
when 'N' then
(SELECT c.duedate from book_copy a, book b, loan c
where b.isbn = 123456
and a.isbn = b.isbn
and a.book_no = c.book_no)
END AS Availability, a.isbn, a.class_number
FROM book_copy b, book a
where a.isbn = b.isbn and a.isbn = 123456

它返回一个错误,说子查询返回多于一行。我正在尝试获得一本书的可用性。一本书可以有多个副本,由其 book_no 标识。如果有副本可用,它应该只重新运行“在库中”,否则,从贷款表中到期。例如,如果一本书有三份副本,2 份出库,1 份在库中,我希望我的查询显示所有三份副本。我想我缺少一个外部连接。能否请您澄清一下。

我为此使用的表是

book_copy: book_no, isbn, on_loan
loan: student_id, book_no, duedate,datereturned,loan_id
fk: book_no with book_no in book_copy
book: isbn (pk), title, class

谢谢,

最佳答案

问题出在:

(SELECT c.duedate from book_copy a, book b, loan c where b.isbn = 123456 and a.isbn = b.isbn and a.book_no = c.book_no)

您实际上只需要贷款表,但使用 MAX 来确保它只返回一行。

(SELECT MAX(c.duedate) from loan c where a.book_no = c.book_no)

所以...您可以挂接到外部查询中的表 - 无需再次使用 a 和 b。

罗布

关于sql - 子查询返回多行 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1327474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com