创建一个包含多个表且没有连接的视图

create a view with multiple tables with NO joins

我想创建一个包含多个表但没有连接的视图:

SELECT *
Table1, Table2, Table 3

但是服务器正在将其更改为:

Select *
Table1 CROSSJOIN Table2 CROSSJOIN Table3

这不可能吗?

我有 4 个表...产品、表格、规格和第四个,其他三个表的主键组成 Product_Form_Specification。我想显示 Product_Form_Specifications 中没有的所有规范,但我需要能够添加 where 参数来限制表单和产品。我还需要能够 select 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)

这作为查询工作正常,但当我将其保存为视图时服务器更改了它。

编辑:我不知道我之前做错了什么,但这工作正常。谢谢你的帮助。我确实了解了“,”是交叉连接。

, 是一种较旧的加入方法...它是一种无需输入 "join".

的加入方法

从技术上讲,您仍然可以这样做,但如果所有表都具有相同的架构,则最简单。

select column1, column2, columnFromTable1Only
from table1
union all select column1, column2, null as columnFromTable1Only
from table2

在上面的例子中,table1table2 有类似 column1column2 的列,但是只有 table1columnFromTable1Only。在这个联合实例中,table2 需要在该列位置有 something,因此使用 null