mysql通过参数关系选择数据

mysql通过参数关系选择数据,mysql,select,Mysql,Select,这里有一些关于(高级)mysql的帮助。这个例子更好地说明了这个问题。所以 我有一个预定义的值对表PARTNERS,其中包含partner1和partner2列。还有另一个表PROJECTS,它有partner1和partner2列 因此,我想选择列partner1和partner2位于上述实际partners表中的所有项目 显然,我不能简单地指出“where partner1=…和/或partner2=…”,因为无法检查这两个是否是合作伙伴(如partners表中定义的)。(以防万一:合作伙伴

这里有一些关于(高级)mysql的帮助。这个例子更好地说明了这个问题。所以

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

因此,我想选择列partner1和partner2位于上述实际partners表中的所有项目

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

我认为这种查询根本不可能,因为它在结果中存储了条件。但如果能证明事实并非如此,我会很高兴。
谢谢

听起来您需要一个查询,该查询将为您提供项目中的行,其中partner 1和partner 2与PARTNERS中任何一行中的行相同。内部连接也是如此:

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

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

我不明白为什么您不能只连接Partner1=Partner1和partner2=partner2上的两个表。。。你能用表格值和预期结果来展示一个真实的例子吗?我想你会明白,这类问题是不相关的,因为这个例子比系统中的实际情况要简单得多。上面的注释“以防万一:partner1和partner2的项目不在合作伙伴关系中。”什么?你所需要做的就是加入两个表(很像下面显示的octern),除非你在解释你的需求方面做得很差,而且我们误解了你的问题。对不起。。。你是对的。。。thanks@StefanH谢谢你纠正我的打字错误(:没问题,你把它改回来了,而且还进行了激烈的斗争:PI当时正在做一个无关的编辑,出于某种原因,所以一直告诉我整个页面都不存在,或者把我发送到人类验证屏幕……感谢你的坚持。好吧,我刚刚意识到我实际上需要剩余的东西,即那些项目包含非合作伙伴的ECT,不包括合作伙伴项目…我是否简单地说“p1!=p1和p2!=p2”?谢谢。我认为这不管用,尽管尝试一下,看看它会有什么回报可能会很有启发性。为此,你应该从项目中选择,并使用与上述相同的加入条件对合作伙伴进行左加入。这将使学生不是合作伙伴的每个项目的合作伙伴字段为空,你可以将其放入你的whe中重新条款。