2

我正在尝试从http://msdn.microsoft.com/en-us/library/aa581776.aspx完成数据访问层教程到目前为止(感谢这个论坛)能够生成适当的 TableAdapter 并且它们可以工作在单张桌子上。现在,我正在尝试通过将 SQL 编辑为查看三个表的嵌套选择格式来修改 GetProducts() 方法的相关表查询;产品、类别和供应商。给出的语法如下:

SELECT     
 ProductID, ProductName, SupplierID, CategoryID, 
 QuantityPerUnit, UnitPrice, UnitsInStock, UnitsOnOrder, 
 ReorderLevel, Discontinued,
    (SELECT 
        CategoryName 
     FROM Categories 
     WHERE Categories.CategoryID = Products.CategoryID  as CategoryName, 
    (SELECT 
       CompanyName 
     FROM Suppliers 
     WHERE Suppliers.SupplierID = Products.SupplierID) as SupplierName
FROM Products

这不解析。谁能告诉我这个嵌套选择的正确语法以便它可以工作?有没有其他人有这个问题?我正在使用 Visual Studio 2010 和 SQL Server 2008 Express。感谢您提供的任何帮助。

4

3 回答 3

1
SELECT     
 ProductID, 
 ProductName, 
 SupplierID, 
 CategoryID, 
 QuantityPerUnit, 
 UnitPrice, 
 UnitsInStock, 
 UnitsOnOrder, 
 ReorderLevel, 
 Discontinued,
 Categories.CategoryName as CategoryName,
 Suppliers.CompanyName As SupplierName
FROM Products
Join Suppliers On Suppliers.SupplierID = Products.SupplierID
Join Categories On Categories.CategoryID = Products.CategoryID

您想在此处使用 Join 而不是嵌套查询

于 2011-08-02T15:55:04.263 回答
1

看起来您缺少第一个子查询的结束括号,请更改;

... Products.CategoryID as CategoryName

... Products.CategoryID) as CategoryName
于 2011-08-02T15:51:33.077 回答
1

您没有关闭第一个“(”(或者可能是第二个,具体取决于您如何看待它)。

于 2011-08-02T15:51:39.587 回答