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只是一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加。