2017-04-05 14 views
-1

私はいくつかのデータを持つデータベースを持っています。例えばDBデータの出力変更

Time Type 
1:00 123 
2:00 123 
3:00 123 
4:00 123 
5:00 113 
6:00 113 
7:00 113 
8:00 113 
9:00 334 
10:00 334 
11:00 334 
12:00 123 

そして、私はそうのようなDB何かからの出力を持っているしたいと思います:

At 5:00 type changed from 123 to 113 
At 9:00 type changed from 113 to 334 
At 12:00 type changed from 334 to 123 

私はGROUP BYを経由していることを試してみたが、それが唯一の異なる値を出力しますだからOKだったけど、同じ日付タイプがあったときには、それは1つだけにグループ化されていたので、最初の変更が出力されました...

誰か助けてくれませんか?

+0

が重複する可能性を - 前の行から値を減算する、group by](http://stackoverflow.com/questions/13196190/mysql-subtracting-value-from-previous-row-group-by) – mkaatman

答えて

0

これがあなたの問題を解決する場合、この回答に「解決済み」とマークすることを忘れないでください。

<?php 
$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "myDB"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
     } 

$sql = "SELECT Time, Type FROM MyTable"; 
$result = $conn->query($sql); 

// Declare 4 variables to store time and type so you can compare to previous. 
$time1 = ""; 
$type1 = ""; 
$time2 = ""; 
$type2 = ""; 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     $time2 = $row["Time"]; 
     $type2 = $row["Type"]; 
     if ($type2 == $type1) { 
      $time1 = $time2; 
      $type1 = $type2; 
      } 
     else { 
      echo "At $tim2 type changed from $type1 to $type2"; 
      $time1 = $time2; 
      $type1 = $type2; 
      } 
     } 
    } 
else { 
    echo "0 results"; 
    } 
$conn->close(); 
?> 

あなたは、ループのコードを短縮し、この書くことができます:ループの開始時に最初の結果を除外するには

while($row = $result->fetch_assoc()) { 
     $time2 = $row["Time"]; 
     $type2 = $row["Type"]; 
     if ($type2 != $type1) { 
      echo "At $tim2 type changed from $type1 to $type2"; 
      } 
     $time1 = $time2; 
     $type1 = $type2; 
     } 

を、この書き込み:[MySQLのの

while($row = $result->fetch_assoc()) { 
     $time2 = $row["Time"]; 
     $type2 = $row["Type"]; 
     if ($type2 != $type1 && $type1 != "") { 
      echo "At $tim2 type changed from $type1 to $type2"; 
      } 
     $time1 = $time2; 
     $type1 = $type2; 
     } 
+0

ありがとう、私はいくつかの変更を加えなければならなかった、しかし、一般的には、僕は想像した。 –

関連する問題