我正在将所有旧的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地址? 在此先感谢您的帮助!
答案 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
子句并在应用程序中循环结果,而不是循环查询。