【发布时间】:2019-06-26 04:12:27
【问题描述】:
Members 是俱乐部成员的表格。每个成员的各种详细信息通过 ID、姓名、地址、电子邮件等各种列包含在此表中。
现在,此表的任何两个成员都可以有关系。例如,如果 A、B、C 和 D 都是该表的成员,则 A 和 B 可以有关系; A 可以 C 有关系; B 和 D 可以有关系,等等。因此,虽然成员 A 可以与所有其他成员(例如 B、C 和 D 等)有关系,但他可以与任何其他成员有关系,无论哪种方式,即,它可以是 A-B 或 B-A。 对于这种关系,已经创建了一个新表关系。这只有 3 列;即ID、FirstMemberID、SecondMemberID。在这里,FirstMemberID 和 SecondMemberID 基本上都是 Members 表中成员(在关系中)的各自 ID。
现在,我想构建一个 SQL 查询(用于 MySQL),以从成员表中为所有与 ID 为 XYZ 的人有关系的成员选择完整的详细信息(所有列),其中 XYZ 是这种关系的第一部分。这里 XYZ 只是这个人的 ID,而不是他的名字。 所以,我可以第一个查询:
SELECT SecondMemberID FROM Relations WHERE FirstMemberID = XYZ;
这个查询给出了多个结果,因为 XYZ 与许多成员有关系。 另一个select语句是这样的:
SELECT * FROM Members WHERE ID = SecondMemberID;
[注意:这里,SecondMemberID 是第一个查询返回的内容。但是,正如我所说,这里可以有很多 SecondMemberID。]
我的问题是如何组合这两个查询以获得正确的结果。
我尝试了各种方法,例如将第一个查询的结果视为一个数组,然后在第二个查询中使用 IN 运算符,使用 PHP 的 implode 方法或其他方法。我也尝试过各种 JOIN 语句,但都没有成功。
我错过了什么?你能帮忙吗?
【问题讨论】: