Я хотел бы создать представление нескольких таблиц, но не присоединяется:создать представление с несколькими таблицами с NO не присоединяется
SELECT *
Table1, Table2, Table 3
Но сервер меняется это:
Select *
Table1 CROSSJOIN Table2 CROSSJOIN Table3
Это невозможно?
У меня есть 4 стола ... Продукты, формы, спецификации и четвертый, где первичные ключи других трех составляют Product_Form_Specification. Я хотел бы показать все спецификации, которые не найдены в Product_Form_Specifications, но мне нужно иметь возможность добавлять, где параметры ограничивают форму и продукт. Я также должен иметь возможность выбирать FormNumber и ProductID. У меня есть ...
SELECT DISTINCT TOP 1000
s.Commerce_SpecificationID
,s.Commerce_Spec_Name
,p.ProductID
,f.FormNumber
FROM Commerce.dbo.Commerce_Specifications s
, Commerce.dbo.Products p
, Commerce.dbo.Commerce_Forms f
WHERE s.Commerce_SpecificationID NOT IN
(SELECT s2.Commerce_SpecificationID
FROM Commerce.dbo.Commerce_Specifications s2
INNER JOIN [Commerce].[dbo].[Commerce_Product_Form_Specification] pfs on pfs.SpecificationID = s2.Commerce_SpecificationID
INNER JOIN Commerce.dbo.Products p2 on pfs.ProductID = p2.ProductID
INNER JOIN Commerce.dbo.Commerce_Forms f2 on pfs.FormNumber = f2.FormNumber
WHERE p2.ProductID = p.ProductID
AND f2.FormNumber = f.FormNumber)
Это прекрасно работает как запрос, но сервер меняет его, когда я сохраняю его как представление.
EDIT: Я не знаю, что я делал неправильно раньше, но это работает нормально. Спасибо, что помогли. Я узнал о "," будучи кросс-соединениями.
Какое отношение имеют эти таблицы? Кроме того, какая структура имеет эти таблицы, и каков ваш желаемый результат? Если ваши структуры таблиц одинаковы или похожи, вы можете использовать UNION. В противном случае вы должны использовать объединения. – gmiley
Собственно, 'table1, table2' является' CROSS JOIN'. – dario
Что вы пытаетесь достичь? Из того, что я вижу, JOIN - правильный инструмент для работы здесь. – Brian