Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL联合查询查找另一个表?_Mysql_Count_Union - Fatal编程技术网

MYSQL联合查询查找另一个表?

MYSQL联合查询查找另一个表?,mysql,count,union,Mysql,Count,Union,我有一个查询(如下)将检查3个表中的匹配项。所有3个表都有UID和IPADDRESS列;第三个表也有USERNAME。如何更改下面的查询以使用与ipaddress匹配的用户名的唯一列表填充变量$username 因此,在每个表中,ipaddress匹配的UID可能是2、3、6、6、23、2、6,因为有多个条目,可能有人欺骗了其他ip。我想要的是用与UID2、3、6、23(唯一列表)匹配的用户名填充$username的查询。我必须告诉你,我对MySQL和查询一无所知。问题是: error_repo

我有一个查询(如下)将检查3个表中的匹配项。所有3个表都有UID和IPADDRESS列;第三个表也有USERNAME。如何更改下面的查询以使用与ipaddress匹配的用户名的唯一列表填充变量$username

因此,在每个表中,ipaddress匹配的UID可能是2、3、6、6、23、2、6,因为有多个条目,可能有人欺骗了其他ip。我想要的是用与UID2、3、6、23(唯一列表)匹配的用户名填充$username的查询。我必须告诉你,我对MySQL和查询一无所知。问题是:

error_reporting(E_ALL & ~E_NOTICE & ~8192);
$UAM = strtoupper($_SERVER['HTTP_USER_AGENT']);
$ips = strtoupper($_SERVER['REMOTE_ADDR']);

$myquery= "select sum(total)
FROM (SELECT count(*) as total,userid
      FROM " .TABLE_PREFIX."memberviews v
      where v.ipaddress = '$ips'
      union all
      SELECT count(*) as total,userid
      FROM " .TABLE_PREFIX."membervisits v1
      where v1.ipaddress = '$ips'
      union all
      SELECT count(*) as total,userid
      FROM " .TABLE_PREFIX."user v3
      where v3.ipaddress = '$ips'
      )src";

$result = mysql_query($myquery);
$rowCount = mysql_num_rows($myquery);
$row = mysql_fetch_array($myquery);
$username = $row['userid'];

    If($rowCount !=0){
      $fp = fopen("logtext.txt", "a");
$DateOfRequest = date('m-d-Y H:i:s');
fwrite($fp, "Registration Attempt\n\nDate: . $DateOfRequest . \nMatched Member: . $username . \nWith User Agent:  . $UAM . \nIP: . $ips . \n\n");
    }
mysql_free_result($myquery);

当前,该查询在写入文件的同时也在运行。感谢所有帮助:)

如果我正确理解了您的问题,这将为您提供与IP地址相关联的用户名列表:

SELECT username
  FROM uses AS u
  JOIN (SELECT userid
          FROM memberviews AS v1
         WHERE v1.ipaddress = $ips
        UNION
        SELECT userid
          FROM membervisits AS v2
         WHERE v2.ipaddress = $ips
        UNION
        SELECT userid
          FROM user AS v3
         WHERE v3.ipaddress = $ips
       ) AS v ON u.userid = v.userid
我已经对SQL进行了解压,大部分情况下-
$ips
标记了需要IP地址的地方。联合(没有全部)消除了重复的用户ID值;唯一用户ID的列表与用户表连接,以生成相应的用户名


请注意,这将生成多行,每个用户名一行。您的问题在输出中的用户ID和用户名之间不明确;如果只需要数字,则只需要UNION子查询作为主查询。有一些MySQL机制,例如GROUP_CONCAT,可以从列表中创建单个值。阅读手册。

谢谢,但我会忘记我的计数,不是吗?我的进一步检查是查看是否至少找到一个匹配项,然后写入文件,我将如何合并检查,例如检查是否存在匹配项,以便触发文件写入?如果它将生成唯一用户名列表,那么这很好,我可以检查$username是否为空或长度为零。