【发布时间】:2015-08-08 01:17:16
【问题描述】:
我一直在努力解决通过公用表上的连接将两个查询的结果组合在一起的概念,我希望能获得一些帮助。以下是表格的粗略指南:
dbo.Asset (not returned in the SELECT statement, used for joins only)
- dbo.Asset.AssetID
- dbo.Asset.CatalogueID
dbo.WorkOrder
- WorkOrderID
- AssetID
- WorkOrderNumber
dbo.WorkOrderSpare
- WorkOrderID
- WorkOrderSpareID
- WorkOrderSpareDescription
- ActualQuantity
- CreatedDateTime
dbo.Catalogue
- CatalogueID (PK)
- CatalogueNumber
- CatalogueDescription
- CatalogueGroupID
dbo.CatalogueGroup
- CatalogueGroupID
- CatalogueGroupNumber
第一个查询:
SELECT CatalogueGroup.CatalogueGroupName,
Catalogue.CatalogueNumber,
Catalogue.CatalogueDescription,
Catalogue.CatalogueID,
Asset.IsActive
FROM CatalogueGroup
INNER JOIN Catalogue
ON CatalogueGroup.CatalogueGroupID = Catalogue.CatalogueGroupID
INNER JOIN Asset
ON Catalogue.CatalogueID = Asset.CatalogueID
第二次查询:
SELECT WorkOrder.WorkOrderNumber,
WorkOrderSpare.WorkOrderSpareDescription,
WorkOrderSpare.ActualQuantity,
WorkOrderSpare.CreatedDateTime
FROM WorkOrder
INNER JOIN WorkOrderSpare
ON WorkOrder.WorkOrderID = WorkOrderSpare.WorkOrderID
现在我可以在 Access (WYSIWYG) 中轻松完成上述操作,方法是将 Asset/Catalogue/CatalogueGroup 连接在一起,然后将 Asset.AssetID 加入 WorkOrder.AssetID。我似乎无法通过原始代码获得任何类似于工作的东西,我认为我的逻辑对于连接是正确的(两者的结果都为 INNER JOIN),但我对此并不陌生。
任何帮助将不胜感激,任何关于我可以在哪里进一步了解此类问题的指针都会很棒。
编辑:这是我试图使用但无济于事的,我还应该提到我正在尝试在 ms-sql 中执行此操作,而不是 Access(试图摆脱拖放):
SELECT CatalogueGroup.CatalogueGroupName,
Catalogue.CatalogueNumber,
Catalogue.CatalogueDescription,
Catalogue.CatalogueID,
Asset.IsActive,
WorkOrderSpare.WorkOrderSpareDescription,
WorkOrderSpare.ActualQuantity,
WorkOrderSpare.CreatedDateTime,
WorkOrder.WorkOrderNumber
FROM (((CatalogueGroup
INNER JOIN Catalogue
ON CatalogueGroup.CatalogueGroupID = Catalogue.CatalogueGroupID)
INNER JOIN Asset ON Catalogue.CatalogueID = Asset.CatalogueID)
INNER JOIN WorkOrderSpare
ON WorkOrder.WorkOrderID = WorkOrderSpare.WorkOrderID)
INNER JOIN WorkOrder ON Asset.AssetID = WorkOrder.AssetID
【问题讨论】:
-
如果您发布了您尝试运行但不起作用的代码,这可能会有所帮助。看到你的尝试可能比目前写的问题更有价值。你可能犯了一个很简单的错误,别人很容易发现。
-
另外,不能在Access中显示WYSIWYG设计器生成的SQL查询吗? (我不记得这是否是一项功能。我已经很多年没有接触过 Access。)
-
您想使用哪些键来连接两个结果集?或者,您希望以哪种方式合并两个结果集?
-
我会写下我试图再次使用的代码,并会尽快发布。我试图将 dbo.Asset.AssetID 加入到 dbo.WorkOrder.AssetID 和 dbo.Asset.CatalogueID 到 dbo.Catalogue.CatalogueID
-
您的表格布局中没有
WorkOrder.AssetID。其次,这不是 Access SQL 语法,因为 Access 在多个 INNER JOIN 周围使用括号。这必须是 SQL Server 方言,尤其是带有dbo前缀的。
标签: sql sql-server