如何将这些表连接在一起?

时间:2014-05-26 10:18:55

标签: sql sql-server database join rdbms

我有以下情况:

我有这个查询联合两个不同的表,分别命名为 VulnerabilityAlertDocumentId CPE ,通过 VulnerabilityAlertDocument_Cpe 传递绑定两个表多对多关系:

SELECT CPE.* FROM VulnerabilityAlertDocument_Cpe VAD_CPE
            INNER JOIN Cpe CPE ON VAD_CPE.CpeId = CPE.Id
            WHERE VAD_CPE.VulnerabilityAlertDocumentId = 87926

此查询运行良好,我获得以下输出:

Id         Cpe                          SourceId    vendor_id    product_id
27975      cpe:/o:google:android:1.0    NVD         984          3967
27976      cpe:/o:google:android:1.1    NVD         984          3967
27977      cpe:/o:otherCPE              NVD         111          2222

因此,正如您所看到的,在此输出中,我有两个名为 vendor_id product_id 的字段,它们将单个记录直接绑定到两个名为 CpeVendor <的表/ strong>和 CpeProduct 两者都包含以下列: id nome date_added

所以,现在我的问题是我想在上一个查询输出中获取 nome 列值。

我认为,对于上一个查询的每个输出记录,我还必须加入 CpeVendor CpeProduct 表,但我不确定。你能帮我解决这个问题吗?

TNX

1 个答案:

答案 0 :(得分:3)

尝试将两个表添加到您的查询中:

SELECT CPE.*, p.nome as Product, c.nome as Vendor 
FROM VulnerabilityAlertDocument_Cpe VAD_CPE
  INNER JOIN Cpe CPE ON VAD_CPE.CpeId = CPE.Id
  LEFT OUTER JOIN CpeVendor c  ON CPE.vendor_id = c.vendor_id
  LEFT OUTER JOIN CpeProduct p on CPE.product_id = p.product_id
WHERE VAD_CPE.VulnerabilityAlertDocumentId = 87926