php - 如何从两个表构建sql查询?

标签 php mysql sql

Members 是俱乐部成员的表格。每个成员的各种详细信息通过 ID、姓名、地址、电子邮件等各种列包含在该表中。

现在,这个表的任何两个成员都可以有关系。比如A、B、C、D都是这个表的成员,那么A和B就可以有关系; A可以与C有关系吗? B 和 D 可以有关系等。因此,虽然成员 A 可以与所有其他成员(如 B、C 和 D 等)有关系,但他可以与任何其他成员建立关系,无论哪种方式,即,它可以是 A-B 或 B-A。 对于此关系,已创建一个新表 Relations。这只有 3 列;即ID、FirstMemberID、SecondMemberID。在这里,FirstMemberID 和 SecondMemberID 基本上都是 Members 表中成员(在关系中)的各自 ID。

现在,我想构造一个 SQL 查询(对于 MySQL),以从 Members 表中为所有与 ID 为 XYZ 的人有关系的成员选择完整的详细信息(所有列),XYZ 是这种关系的第一部分。这里的 XYZ 只是这个人的 ID 而不是他的名字。 所以,我可以在第一个查询中:

SELECT SecondMemberID FROM Relations WHERE FirstMemberID = XYZ;

这个查询给出了多个结果,因为 XYZ 与许多成员有关系。 另一个选择语句是这样的:

SELECT * FROM Members WHERE ID = SecondMemberID;

[注意:此处,SecondMemberID 是从第一个查询返回的内容。但是,正如我所说,这里可以有很多 SecondMemberID。]

我的问题是如何以得到正确结果的方式组合这两个查询。

我尝试过各种方法,比如将第一个查询的结果作为数组处理,然后在第二个查询中使用 IN 运算符,使用 PHP 的 implode 方法或其他方式。我也尝试过各种 JOIN 语句但没有成功。

我错过了什么?你能帮忙吗?

最佳答案

尝试

SELECT Members.* 
  FROM Relations LEFT JOIN Members 
    ON (Relations.SecondMemberID=Members.ID) 
 WHERE Relations.FirstMemberID = XYZ;

关于php - 如何从两个表构建sql查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56765071/

相关文章:

Mysql、InnoDB 到 MyISAM 进行全文索引

python - 为什么我在 "Unknown column ' 中得到 'where clause' Jacob'?

mysql - having/where 子句中的未知列

php - 打印变量和文本时不带空格?

php - android json 发布到 php

php - 如何对时间戳进行 strtotime,或者如何最好地处理 SQL 日期?

mysql - 按月和年创建sql表

php - 如何在 PHP 中截断 UTF8 字符串?

mysql - 如何在 mysql 连接查询中使用一列中的两个位置?

sql - 在sqlite中选择最接近的值不起作用