Как построить SQL-запрос - PullRequest
0 голосов
/ 25 мая 2010

Я работаю над реализацией соединения данных между моим приложением C # и базой данных SQL Server Express. Пожалуйста, имейте в виду, что я раньше не работал с SQL-запросами.

У меня есть следующие соответствующие таблицы:

ArticlesCommon
ArticlesLocalized
CategoryCommon
CategoryLocalized

Таблица ArticlesCommon содержит информацию, не зависящую от языка, такую ​​как цена, вес и т. Д.

Это утверждение на данный момент:

SELECT * 
    FROM ArticlesCommon 
    INNER JOIN ArticlesLocalized ON ArticlesCommon.ID = ArticlesLocalized.ID 
WHERE ArticlesLocalized.Language = @language
ORDER BY ArticlesCommon.DateAdded

ArticlesCommon содержит идентификатор категории для каждой строки. Теперь я хочу использовать это для поиска локализованной информации в CategoryLocalized и добавления ее к результату, что-то вроде

SELECT *, CategoryLocalized.Name as CategoryName.

Если я понял свою точку зрения, это выполнимо?

Edit:

Еще один вопрос. Как ArticlesLocalized, так и ArticlesCommon содержат ID, которые, естественно, совпадают. Я хочу выбрать все из ArticlesCommon, но все, кроме ID из ArticlesLocalized. Есть ли краткий способ добиться этого?

Я думаю, что

ВЫБРАТЬ * ОТ .....

вывести все столбцы из всех объединенных таблиц?

Ответы [ 2 ]

1 голос
/ 25 мая 2010

какой ключ вам нужен, чтобы присоединиться к

Это работает?

SELECT * FROM ArticlesCommon 
INNER JOIN ArticlesLocalized ON
ArticlesCommon.ID = ArticlesLocalized.ID 
INNER JOIN CategoryLocalized ON ArticlesCommon.ID = CategoryLocalized.ID
WHERE ArticlesLocalized.Language = @language
ORDER BY ArticlesCommon.DateAdded
0 голосов
/ 25 мая 2010

Просто добавьте еще один Присоединиться

SELECT * FROM ArticlesCommon c 
   JOIN ArticlesLocalized L
       ON  a.ID = L.ID  
   JOIN CategoryLocalized CL
       ON  CL.ID = c.CategoryID  
WHERE ArticlesLocalized.Language = @language 
ORDER BY ArticlesCommon.DateAdded 

Используйте внешние объединения, если не каждая строка в ArticlesCommon имеет CategoryId

SELECT * FROM ArticlesCommon c 
   JOIN ArticlesLocalized L
       ON  a.ID = L.ID  
   Left [OUTER] JOIN CategoryLocalized CL
       ON  CL.ID = c.CategoryID  
WHERE ArticlesLocalized.Language = @language 
ORDER BY ArticlesCommon.DateAdded 
  • [OUTER] является необязательным, поскольку [Left] подразумевает OUTER
...