如何将这两个MySQL选择查询合并为一个以防止循环?

时间:2015-02-05 17:26:07

标签: php mysql pdo

我正在将所有旧的mysql函数重写为预处理语句(PDO)。我也尝试重写所有sql内部循环,使查询“智能”,因此不再需要sql-loops。但是这个,我不知道如何做到这一点。

用于搜索已使用的ip地址的简单SQL:

SELECT ip FROM log_ip WHERE spelerID = :spelerID

通常我会对结果执行while循环:对于每个找到的ip地址,我都会进行新的SQL搜索,以便在同一个ip-address上查找其他用户。

SELECT spelerID,naam FROM log_ip WHERE ip = :ip 

我找不到创建1个查询的解决方案,找到用户,使用相同的IP地址? 在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您可以使用LEFT OUTER JOIN,在这种情况下,它也是“自我加入”:

SELECT l1.ip, l2.spelerID, l2.naam
FROM log_ip l1
LEFT OUTER JOIN log_ip l2
  ON l2.ip = l1.ip
  AND l2.spelerID <> l1.spelerID
WHERE l1.spelerID = :spelerID

现在,请注意,结果与您可能习惯的结果略有不同。 l1 ip值将重复。

您应该调查JOIN子句并在应用程序中循环结果,而不是循环查询。