如何在我的SQL查询中使用左外连接?

时间:2016-01-05 12:11:30

标签: asp.net sql-server

这是我的问题:

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。

有人可以指导我解决这个问题吗?

谢谢,

2 个答案:

答案 0 :(得分:2)

从选择列表中的联接表中选择特定列。此处bls是表别名,以提高可更新性。您需要选择所需的列并将其包含在选择列表中。下面的查询将选择两个表中的所有列。

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