0

如果我重复这个问题,我很抱歉,但是,我没有找到任何可以帮助我的东西。

无论如何,这就是问题:

我正在写一个约会应用程序,在这个应用程序中,我在相互感兴趣的部分窃听。

我的意思是,关于一个人,你有 3 种选择(你想和他/她约会吗?是的,也许,不)。

所以,我创建了一个表格,保存您的用户 ID、您想约会的人员 ID 以及您的回复(是、否或可能)。

有没有办法比较你说是或可能,而另一个人说是或可能,会返回类似共同人的东西?

类似的东西(如果您说是或否,并且该人说是或否,则选择所有共同的人)。

如果听起来令人困惑,我很抱歉,但如果有疑问,我可以更好地解释。

不过,我的英语没有帮助....我是巴西人

4

5 回答 5

6

像这样的东西,

SELECT  LEAST(a.UserID, a.PersonID) AS Person1,
        GREATEST(a.UserID, a.PersonID) AS Person2,
        a.Response
FROM    TableName a
        INNER JOIN TableName b
            ON  a.UserID = b.PersonID AND
                a.PersonID = b.UserID AND
                a.Response = b.Response
GROUP   BY Person1, Person2

假设你有这样的记录,

╔════════╦══════════╦══════════╗
║ USERID ║ PERSONID ║ RESPONSE ║
╠════════╬══════════╬══════════╣
║      1 ║        2 ║ yes      ║
║      2 ║        1 ║ yes      ║
║      3 ║        4 ║ no       ║
║      4 ║        3 ║ yes      ║
║      5 ║        6 ║ maybe    ║
║      6 ║        5 ║ maybe    ║
╚════════╩══════════╩══════════╝

查询的输出是

╔═════════╦═════════╦══════════╗
║ PERSON1 ║ PERSON2 ║ RESPONSE ║
╠═════════╬═════════╬══════════╣
║       1 ║       2 ║ yes      ║
║       5 ║       6 ║ maybe    ║
╚═════════╩═════════╩══════════╝
于 2013-04-09T14:48:43.413 回答
1

太感谢了。根据您的回答,我已经达到了这一点:

SELECT p2.atirador AS mutual
FROM paqueras AS p1, paqueras AS p2
WHERE p2.alvo = $UserID
AND p1.atirador = $UserID
AND p2.atirador = p1.alvo
AND (
p1.resposta1 =  "sim"
OR p1.resposta1 =  "talvez"
)
AND (
p2.resposta1 =  "sim"
OR p2.resposta1 =  "talvez"
)

我做了什么?我会试着解释一下,我得到了所有与用户 ID 相互关联的人。当用户访问他的共同页面时,这会派上用场,你知道吗?

好吧,到目前为止一切都很好......谢谢你们,我会报告任何错误。但我们希望不要;-)

于 2013-04-10T13:27:25.973 回答
0
SELECT him.id as "him",  
her.id AS "her",  
FROM match him, match her  
WHERE him.id = her.id OR her.id=him.id;

您可以根据需要扩展...以匹配是/否/可能字段。

于 2013-04-09T14:50:59.893 回答
0

这行得通吗?

SELECT * FROM test t1 INNER JOIN test t2 ON t1.id = t2.personid AND t2.id=t1.personid WHERE t1.response=t2.response;

http://www.sqlfiddle.com/#!2/9170c/1

如果您想要特定响应的结果(是的,可能是),您可以在WHERE条件中添加它。

于 2013-04-09T14:51:52.757 回答
0

就像是:

Select Userid As p1, Personid p2
From YourTable
Where (Response like "Yes" OR Response like "Maybe") AND p2 IN(
Select Userid
From YourTable
Where Userid = p2 AND Personid = p1 AND (Response like "Yes" OR Response like "Maybe");
于 2013-04-09T14:56:01.277 回答