Нужна помощь с исправленным синтаксисом SQL для учебника по уровню доступа к данным Northwind - PullRequest
2 голосов
/ 02 августа 2011

Я пытаюсь завершить учебное пособие по уровню доступа к данным из http://msdn.microsoft.com/en-us/library/aa581776.aspx Я до сих пор (благодаря этому форуму) смог генерировать соответствующий TableAdapter, и они работают на отдельных таблицах. Теперь я пытаюсь выполнить запрос к связанным таблицам, который модифицирует метод GetProducts (), отредактировав SQL-код во вложенный формат select, просматривая три таблицы; Продукты, категории и поставщики. Синтаксис приведен ниже:

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. Спасибо за любую помощь, которую вы можете оказать.

Ответы [ 3 ]

1 голос
/ 02 августа 2011

Вы не закрыли первое "(" (или, возможно, второе, в зависимости от того, как вы на него смотрите).

1 голос
/ 02 августа 2011
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

Вы хотите использовать здесь присоединение вместо вложенного запроса

1 голос
/ 02 августа 2011

Похоже, вы пропустили закрывающую скобку для 1-го подзапроса, измените;

... Products.CategoryID as CategoryName

до

... Products.CategoryID) as CategoryName
...