0

左結合があります。以下に示すコードは、

  • ID
  • リファラー
  • 検索語
  • クライアントID

テーブル 1 から、下の左結合クエリを使用して、テーブル 2 から次の列を取得します。

  • クライアントID
  • visit_id
  • 日時
  • url1

     $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 を表します。現時点では、ループ内にあるため、すべての行の後にリファラーと検索語を取得し、それを理解しています。リファラーと検索用語を結果のグループごとに 1 回だけ表示できるかどうかわかりません。

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

私は通常、リファラーを格納する変数を設定し、ループごとに確認します。前回と同じなら何もしない。異なる場合は、新しいヘッダー情報 (この場合は referrer と search_term) を表示してから、変数を更新します。

$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 に答える