SQL从两个表中选择数据并按点排序
我和朋友有一个数据库表SQL从两个表中选择数据并按点排序,sql,Sql,我和朋友有一个数据库表 Table `friends` friend1 | friend2 --------+-------- 3 | 4 4 | 1 我在表中插入朋友对的方式是由请求者到发送者,这意味着你可以在一半对中是“friend1”,在另一半对中是“friend2” 然后我有另一个表格,里面有关于人的详细信息,比如名字,姓氏,分数。有一个ID对所有人来说都是唯一的,它在“people”表和“friends”表中都被用来标识他们,所以friend1=someid,
Table `friends`
friend1 | friend2
--------+--------
3 | 4
4 | 1
我在表中插入朋友对的方式是由请求者到发送者,这意味着你可以在一半对中是“friend1”,在另一半对中是“friend2”
然后我有另一个表格,里面有关于人的详细信息,比如名字,姓氏,分数。有一个ID对所有人来说都是唯一的,它在“people”表和“friends”表中都被用来标识他们,所以friend1=someid,friend2=someid
Table `people`
idk | name | surname | points
----+------+---------+-------
1 | John | Doe | 12
2 | John | Doe | 15
3 | John | Doe | 5
4 | John | Doe | 26
现在,我想选择你们所有的朋友——记住,在一些对中,你们是“朋友1”,在另一些对中,你们是“朋友2”,并从“人物”数据库中列出按点数排序的所有朋友
你知道怎么做吗?作为一个SQL或PHP
我想要的结果是:
你是“身份证号码:4”
按点数排序的朋友:
ID |点
--+----
1 | 12
3 | 5
好的,您可以从您的朋友表中选择所有表,其中显示了该人的ID 类似于
SELECT *
FROM friends f, person p1, person p2
WHERE f.friend1 = p1.id
AND f.friend2 = p2.id
AND (p1.id = HERE YOUR USER ID OR p2.id = HERE YOUR USER ID)
在Php中,您需要从数组中筛选出所选的人,然后获得有关其朋友的所有信息。如果我理解正确,您可以执行以下操作:
select p.*
from friends f join
people p
on ( (p.person_id = f.friend1 and f.friend2 = @x) or
(p.person_id = f.friend2 and f.friend1 = @x)
)
order by p.points desc;
请提供示例数据和所需结果,以便您的问题对其他人有意义。无问题。我会编辑它。您使用的是哪种DBMS产品?SQL只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加。