这是我的问题:
ALTER PROCEDURE sp_logdetails
(
@bookid INT
)
AS
BEGIN
SELECT *
FROM book_lending
LEFT OUTER JOIN student ON student.id = book_lending.id
WHERE bookid = @bookid
END
当我执行上述查询时,它只显示book_lending数据,而不显示学生数据。这是我的screenshot
这是我的学生表数据screenshot:
我可以知道,如何获取学生数据的特定bookid。我曾经将book_lending id的外键设置为学生ID。
有人可以指导我解决这个问题吗?
谢谢,
答案 0 :(得分:2)
从选择列表中的联接表中选择特定列。此处bl
和s
是表别名,以提高可更新性。您需要选择所需的列并将其包含在选择列表中。下面的查询将选择两个表中的所有列。
SELECT bl.*, s.*
FROM book_lending bl
LEFT OUTER JOIN student s ON s.id = bl.id
AND bl.bookid = @bookid
答案 1 :(得分:0)
你在联接中混淆了字段:
LEFT OUTER JOIN student ON student.id = book_lending.id
您尝试将学生与按两者的ID进行预订贷款相匹配 - 这是错误的。
将代码更改为此,您将开始获得结果:
SELECT *
FROM book_lending
LEFT OUTER JOIN student ON student.id = book_lending.studentid
WHERE bookid = @bookid