0

我有一个左连接,下面显示的代码需要,

  • ID
  • 推荐人
  • 搜索词
  • client_id

从表 1 中,然后使用下面的左连接查询从表 2 中获取以下列。

  • client_id
  • 访问ID
  • 时间日期
  • 网址1

     $query = "SELECT table1.id, table1.search_term, table1.referrer, table1.client_id,    table2.client_id, table2.url1, table2.visit_id, table2.timedate ".
      "FROM table1 LEFT JOIN table2 "
     "ON table1.id = table2.visit_id WHERE table1.ip_address = '$ip_address' AND table1.client_id='$client_id' Group BY visit_id, timedate";
    
       $result = mysql_query($query) or die(mysql_error());
    
          while($row = mysql_fetch_array($result)){ ?>
         <div id=''>
       <?php "<br />";
       echo $row['referrer']. " - ". $row['search_term']; 
       echo $row['timedate']. " - ". $row['url1']. " - ". $row['visit_id'];
       echo "<br />"; ?>
           </div>
       <?php
            }
    

我要做的是格式化行,以便引荐来源网址和搜索词只显示一次,而不是在每一行上显示,以便结果看起来像这样。

推荐人搜索词

时间日期 url1 1 时间日期 url1 1 时间日期 url1 1

推荐人搜索词

时间日期 Url1 2 时间日期 Url1 2 时间日期 Url1 2

数字 1 和 2 代表不同的访问 id,根据这些访问 ID 对结果进行分组。目前,我在每一行之后都得到了引用者和搜索词,因为它在循环中并且理解这一点。只是不知道我是否可以在每组结果中只显示一次推荐人和搜索词。

4

2 回答 2

1

您必须保存当前待处理的referrer-searchterm 组合并检查它是否更改,如果是,则打印出referrer-searchterm 行:

$query = "SELECT table1.id, table1.search_term, table1.referrer, table1.client_id,    table2.client_id, table2.url1, table2.visit_id, table2.timedate ".
  "FROM table1 LEFT JOIN table2 "
 "ON table1.id = table2.visit_id WHERE table1.ip_address = '$ip_address' AND table1.client_id='$client_id' Group BY visit_id, timedate" .
 "ORDER BY referrer, search_term";

$result = mysql_query($query) or die(mysql_error());
$currentReferrerSeatchTerm = null;

while($row = mysql_fetch_array($result)){   
    $newReferrerSearchTerm = $row['referrer']. " - ". $row['search_term'];

    echo '<div id=""><br>';

    if($currentReferrerSeatchTerm != $newReferrerSearchTerm){
       echo $newReferrerSearchTerm . '<br>'; 
       $currentReferrerSeatchTerm = $newReferrerSearchTerm
    }

    echo $row['timedate']. " - ". $row['url1']. " - ". $row['visit_id'];

    echo '<br></div>';
}
于 2013-11-01T13:47:09.493 回答
0

我通常设置一个 var 来存储引用者,然后在每个循环中检查它。如果和之前一样,什么都不做。如果不同,请显示新的标头信息(在您的情况下为引用者和 search_term),然后更新 var。

$query = "SELECT table1.id, table1.search_term, table1.referrer, table1.client_id,    table2.client_id, table2.url1, table2.visit_id, table2.timedate ".
  "FROM table1 LEFT JOIN table2 "
 "ON table1.id = table2.visit_id WHERE table1.ip_address = '$ip_address' AND table1.client_id='$client_id' Group BY visit_id, timedate";

   $result = mysql_query($query) or die(mysql_error());

      $prevRef = '';
      while($row = mysql_fetch_array($result)){ ?>
     <div id=''>
   <?php "<br />";

   if($prevRef != $row['referrer']) {
       echo $row['referrer']. " - ". $row['search_term'];
       $prevRef = $row['referrer'];
   }

   echo $row['timedate']. " - ". $row['url1']. " - ". $row['visit_id'];
   echo "<br />"; ?>
       </div>
   <?php
        }
于 2013-11-01T13:51:31.420 回答