mysql - 测试相互双边一对一连接
问题描述
所以,我正在琢磨一个有趣的想法,我想出了一些令人头疼的问题。我想象的场景有点像快速约会后的得分。如果双方都回答是,他们会收到通知,否则什么都不会。这与约会无关,但这是我能想到的最好的比喻。还有第二对相似,但我将尝试解释我首先考虑的数据结构。
这种情况将是一个表,我们称之为objects
,另一个表,为了论证,我们将称之为quiz
,第三个表具有三个字段,形成一个复合键objects-id-from
,objects-id-about
,quiz-id
我想我们称之为answers
。quiz
有一个字段quiz
。quiz-id
它允许将一行与第二行配对(每行都有另一行的 id) - 或者称为第四个表pairs
(两个字段作为复合键)。
然后,我想搜索并查找给定的objects-id
所有情况,其中要么对于给定的 quiz-id(相互)都有关于另一个的条目,要么对于给定的 quiz-id 有一个条目,而另一个有一个倒数另一个(配对)测验ID(配对)的条目。
在现实世界中,相互就像是快速约会的结果,但配对更像是青少年问他们的朋友“你会给谁回礼”,然后“你会从谁那里得到回礼?” 同样,这不是我们正在做的事情,但这样解释要简单得多。
我想在一个(或最多两个 - 每个一个)MySQL语句中识别相互和配对的结果。如果必须的话,我会使用 PHP,但我想炫耀一下并一键获得结果。问题是我不知道该怎么做。
我什至想知道我是否可以INNER JOIN
从objects
、通过answers
、到quiz
和返回quiz
到objects
. 感觉很乱,但可能会奏效。我想我可以将它quiz
与一个键连接配对quiz
并有一个额外的INNER JOIN
,但我想知道是否没有更简单的东西我错过了?
例如,有没有我可以使用的更简单的实体关系模式。有没有更简单的算法来获得配对和相互?
示例数据:
objects:
id
1,
2,
3,
4
quiz:
id/pair
1/null,
2/3,
3/2,
4/null,
answers:
from/about/quiz
1/2/1,
2/1/1,
3/1/1,
4/2/1,
2/4/1,
1/2/2,
2/1/3,
因此objects
1&2 和 2&4 有一个互为quiz
1
objects
1&2 也通过2 &3配对quiz
(您可能会说是单向连接)
解决方案
推荐阅读
- excel - 添加新行并格式化添加的新行
- image - 在不创建或使用解码器的情况下创建 JPG 文件的镜像的过程是什么?
- ruby-on-rails - 会话控制器规范中 nil:NilClass 的 RSpec 未定义方法“[]”
- python - 无法在 matlab 中导入 keras(python 生成)模型 - 不存在字段“class_name”
- java - Java + JDBC:准备好的语句失败
- r - 来自 R 中 lm 函数的对数似然
- java - 生成包含映射到资源文件的静态字段的 java 类
- r - 将向量的值按另一个向量分组后求和
- c# - 有没有办法将格式化的数学放入 XML 评论 C# Visual Studio 中?
- java - 如何在 Java 中每行输出 10 个整数?