场景:多对多关系。
表有2列:UserID和UserChoiche
我在每行中逐个存储用户首选项。 (这是最有效的方式吗?)
示例:
UserID UserChoiche
mark
anna
mark
paul
mark
john
john
mark
在此示例中,mark选择了3个用户,john选择了1个用户。
John和Mark选择了对方,我需要php才能找到这个db关系。
// php mysql查询选择指定用户的所有选择(在本例中为标记)
SELECT UserChoiche from exampletable WHERE UserID mark
//找到匹配项
??
这是我的问题:我正在寻找最简单,最有效的方法来处理这个问题!
也许是这样的? (它可以工作,但我不能写一个mysql语句,对我来说太复杂了!)
If Userchoice of previous query (in this case it would return anna paul and john) EQUALS any Userid in the table (in this case john) AND that Userid has a Userchoiche with the value of the UserID from the previous query (in this example 4th row)
然后我们有一场比赛
//如果找到了匹配项,那么请使用UserID和UserChoiche并将它们存储到我将用于发出一些通知的变量中(可能有很多匹配,所以也许使用数组?)
答案 0 :(得分:5)
SELECT t1.UserID, t2.UserID
FROM table t1, table t2
WHERE t1.UserID = t2.UserChoiche
AND t2.UserID = t1.UserChoiche
那应该吐出选择对方的两个人。我们基本上是在加入表格以找到相互关系
答案 1 :(得分:2)
以下是返回与mark
匹配的用户的查询。鉴于上述数据,它将返回john
:
SELECT p2.UserID
FROM preferences p1
JOIN preferences p2
ON p2.UserID = p1.UserChoice
AND p1.UserChoice = p2.UserID
WHERE p1.UserID = 'mark'