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/