在MySQL / PHP中查找和存储数据库关系

时间:2012-02-20 22:16:01

标签: php mysql

场景:多对多关系。

表有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并将它们存储到我将用于发出一些通知的变量中(可能有很多匹配,所以也许使用数组?)

2 个答案:

答案 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'