通过连接3个表并在SQL中使用别名来返回4列的问题?

Pau*_*808 1 sql-server join

我仍然很新,SQL并且无法在这里找到答案...我应该写一个SELECT声明,returns 4 columns from 3 tables使用aliases然后将相关名称分配给表...但我得到一个error关于WHERE条款,我不是非常肯定join3个表如何获得我正在寻找的结果.此外,它没有指定JOIN要执行的类型.

这是我的代码:

 SELECT VendorName AS [Vendor], InvoiceDate AS [Date], InvoiceNumber AS [Number], AccountItemDescription AS [Description]
    FROM Vendors AS v JOIN Invoices AS i 
    ON v.VendorID = i.InvoiceID
    JOIN InvoiceLineItems AS l JOIN GLAccounts AS g 
    WHERE l.InvoiceLineItems = g.GLAccounts
    ORDER BY Vendor, Description;-- Unfinished
Run Code Online (Sandbox Code Playgroud)

得到此错误:

Msg 156,Level 15,State 1,Line 6关键字'WHERE'附近的语法不正确.

任何提示将非常感谢...

DWa*_*ace 5

在格式化代码时要小心谨慎.每个人都join应该有一个on条款.你错过了他们InvoiceLineItemsGLAccounts加入.

此外,您的on子句通常会将一个表的主键与另一个表中的外键相关联; 加入VendorsInvoices由等同vendorIDinvoiceID不会给你准确的结果.这些ID没有直接关联.您想要vendorID从一个表链接到另一个表vendorID.我不确定你的田地是如何命名的; 它可能是i.vendorID = v.vendorID或者它可能是类似于i.vendorID = v.id.你的其他连接遵循相同的模式.

你最终会得到这样的东西:

SELECT VendorName AS [Vendor], 
    InvoiceDate AS [Date], 
    InvoiceNumber AS [Number],
    AccountItemDescription AS [Description]
FROM Vendors AS v 
JOIN Invoices AS i ON i.VendorID = v.VendorID
JOIN InvoiceLineItems AS l ON l.InvoiceID = i.InvoiceID
JOIN GLAccounts AS g ON l.GLAccountID = g.GLAccountID
ORDER BY Vendor, Description;
Run Code Online (Sandbox Code Playgroud)