0

我有一个表 tblNoComp,它有两列,两个外键都指向 tblPackage.ID。tblNoComp 的目的是存储哪些包不兼容,只需将这些包的 ID 存储在两列中,OneID然后TwoID.

可能不是存储它的最佳方式,但由于多个包与其他包不兼容,它似乎是最合乎逻辑的。

尝试创建一个并排显示 tblPackage.Name 的视图 - 我有以下内容,但不确定如何获取TwoID包名称..

选择tblNoCompOneID, tblPackages. Package, tblNoComp. TwoID, tblPackages. Package FROM tblNoComp, tblPackages WHERE ( tblNoComp. OneID= tblPackages. PID)

目前第二tblPackagesPackage只是显示 OneID 名称,而不是 TwoID .. 不知道如何解决?

谢谢!

--抱歉,如果是一个简单的问题,我已经搜索了一个小时,但还不能正确描述我的问题。

4

1 回答 1

0

您在评论中的代码:

SELECT
  tblNoComp.OneID,
  tblPackages.Package AS OneIDPackageName,
  tblNoComp.TwoID,
  tblPackages.Package AS TwoIDPackageName
FROM
  tblNoComp
  LEFT JOIN tblPackages
    ON tblNoComp.OneID = tblPackages.PID

别名列而不是表。别名背后的想法是JOIN将同一个表两次作为两个不同的表,使用两个不同的别名。您只加入一次并尝试使用它两次。

你可能更倾向于这样:

SELECT
  tblNoComp.OneID,
  tblOnePackages.Package AS OneIDPackageName,
  tblNoComp.TwoID,
  tblTwoPackages.Package AS TwoIDPackageName
FROM
  tblNoComp
  LEFT JOIN tblPackages AS tblOnePackages
    ON tblNoComp.OneID = tblOnePackages.PID
  LEFT JOIN tblPackages AS tblTwoPackages
    ON tblNoComp.TwoID = tblTwoPackages.PID

(请注意,我没有方便的 MySQL 语法检查器,因此可能需要对其进行调整才能正常运行。)

请注意,同一个表在两个不同的键上连接了两次,并且每次都给它一个不同的别名,以便可以在SELECT子句中将它作为两个单独的表引用。

于 2012-06-25T05:39:36.607 回答