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

时间:2019-06-26 04:12:27

标签: php mysql sql

成员是俱乐部会员的表。该表中通过ID,名称,地址,电子邮件等各种列包含了每个成员的各种详细信息。

现在,该表的任何两个成员都可以有关系。例如,如果A,B,C和D均为该表的成员,则A和B可以具有关系; A罐C有关系; B和D可以有关系等。因此,虽然成员A可以与所有其他成员(例如B,C和D等)有关系,但他可以以任何一种方式与任何其他成员有关系,即可以是AB或BA。 对于此关系,已创建一个新的表Relations。它只有3列;即ID,FirstMemberID,SecondMemberID。在这里,FirstMemberID和SecondMemberID基本上都是从Members表中的成员(在某种关系中)各自的ID。

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

SELECT SecondMemberID FROM Relations WHERE FirstMemberID = XYZ;

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

SELECT * FROM Members WHERE ID = SecondMemberID;

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

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

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

我想念什么?你能帮忙吗?

3 个答案:

答案 0 :(得分:0)

尝试

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

答案 1 :(得分:0)

您需要一个简单的SQL JOIN命令。 JOIN连接两个表。 INNER JOIN在特定条件下将它们连接起来,即,将匹配条件的两行(每个表中的每一行)连接起来。条件通常类似于:table1.field1 == table2.field2,或者您可以使用LEFT或RIGHT JOIN,这将依次联接两行,但左右一行可以为空。

答案 2 :(得分:-1)

我想你想要

SELECT SecondMemberID 
  FROM Relations 
 WHERE Id IN (SELECT SecondMemberID 
                FROM Relations 
               WHERE FirstMemberID = 'XYZ');