我有一个表tblNoComp,它有两列,两个外键都指向tblPackage.ID。 tblNoComp的目的是通过简单地将这些包的ID存储在两列OneID
和TwoID
中来存储哪些包彼此不兼容。
可能不是存储它的最佳方式,但由于多个软件包与其他软件包不兼容,因此它似乎是最符合逻辑的。
尝试创建一个显示两个并排的tblPackage.Name的视图 - 我有以下内容,但不确定如何获取TwoID
包名称..
选择tblNoComp
。OneID
,tblPackages
。Package
,tblNoComp
。TwoID
,tblPackages
。{{1} }
从tblNoComp,tblPackages
WHERE(Package
。tblNoComp
= OneID
。tblPackages
)
目前第二个PID
。tblPackages
只是显示OneID名称,而不是TwoID ..不确定如何解决?
谢谢!
- 如果一个简单的问题道歉,我已经搜索了一个小时但却无法正确描述我的问题。
答案 0 :(得分: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
子句中作为两个单独的表引用。