我得到一个错误:
无法绑定多部分标识符“ archivebook.idarchivestorage”。
SELECT barcode
, name
, code
, yearfrom
, yearto
, archivenumber
, c.line
, c.regal
, c.shelf
FROM archivebook AS A
INNER JOIN archiveclassifications AS B
ON A.idclassification = B.id
AND dateofstatus <= '2019/09/26'
AND dateofstatus >= '2019/09/24'
INNER JOIN administration.dbo.ArchiveStorage C
ON archivebook.idarchivestorage = C.id
答案 0 :(得分:2)
您已经为表名分配了别名。 使用它们:
select ?.barcode, ?.name, ?.code, ?.yearfrom, ?.yearto, ?.archivenumber,
ars.line, ars.regal, ars.shelf
from archivebook ab join
archiveclassifications ac
on ab.idclassification = ac.id and
?.dateofstatus <= '2019-09-26' and
?.dateofstatus >= '2019-09-24' inner join
administration.dbo.ArchiveStorage ars
on ab.idarchivestorage = ars.id;
?
用于适当的表别名。您应限定所有 all 列引用,特别是当查询引用多个表时。这是一个养成的好习惯,因此,如果您正在学习SQL,就显得尤为重要。
请注意,我更改了别名,因此它们是表名的适当缩写。这样可以更轻松地阅读和维护查询。