我正在尝试从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。 感谢您提供任何帮助。
答案 0 :(得分:1)
看起来你错过了第一个子查询的结束,改变了;
... Products.CategoryID as CategoryName
到
... Products.CategoryID) as CategoryName
答案 1 :(得分:1)
你没有关闭第一个“(”(或者可能是第二个,取决于你如何看待它)。
答案 2 :(得分: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
您想使用此处加入而不是嵌套查询