0

请对(高级)mysql提供一些帮助。示例更好地说明了这个问题。所以..

我有一个带有 partner1 和 partner2 列的预定义值对表 PARTNER。然后还有另一个表 PROJECTS,其中包含 partner1 和 partner2 列。

因此,我想选择列 partner1 和 partner2 在上述实际合作伙伴表中的所有 PROJECTS。

显然,我不能简单地指出“partner1=... 和/或 partner2=...”,因为不会检查这两个是否是合作伙伴(如 PARTNERS 表中所定义)。(以防万一:partner1 和 partner2 的项目不在合作伙伴关系中。)

我认为这种查询根本不可能,因为它的条件存储在结果中。但是,如果有人可以证明并非如此,那将很高兴。谢谢

4

1 回答 1

2

听起来您需要一个查询,该查询将为您提供 PROJECTS 中的行,其中合作伙伴 1 和合作伙伴 2 都与 PARTNERS 中的任何行相同。所以做一个内部连接:

SELECT * FROM projects
INNER JOIN partners
    ON projects.partner1 = partners.partner1
    AND projects.partner2 = partners.partner2

如果您准备重组表,则为 PARTNERS 中的每一行分配一个唯一 ID 并在 PROJECTS 表中使用该 ID 可能更有意义。这样一来,您就无需存储两列冗余数据,而只需一列来指示项目中的哪对学生。

于 2012-07-27T17:42:51.460 回答