2016-08-22 12 views
0

私はデータベースを持っていると私は、次のフィールドを抽出しています:データベース照会ロジックの問題

BookDate - AirlineCode - BkngVal

私がやりたい事はJSONファイルに出力を保存することです

[{ 
Date: 2016-01-03, 
Airline Code: BA, 
Airline BkngVal: 1234.00, 
Airline Code: VS, 
Airline BkngVal: 123.00, 
Airline Code: EK, 
Airline BkngVal: 8743.09 
}, 
{ 
Date: 2016-01-04 
Airline Code: UA, 
Airline BkngVal: 134.00, 
Airline Code: BA, 
Airline BkngVal: 129.00, 
Airline Code: 9W, 
Airline BkngVal: 823.09 
}] 

などのような形式で、データベース内に存在します。問題は、同じ日に各航空会社に対して複数の予約が行われているため、日付をグループ化し、その日付を使用している各航空会社に予約金額を加算し、それは日付が主キーであるjsonファイルに変換されます。

最初のMySQLのクエリは次のとおりです。

$stmt = $db->prepare('SELECT BookDate, BkngVal, Market, AirlineCode 
         FROM sales 
         WHERE (Market = :market) 
         AND (BookDate >= :startDate) 
         AND (BookDate <= :endDate) 
         ORDER BY BookDate ASC'); 
    $stmt->execute(array(
     'market' => $location, 
     'startDate' => $start, 
     'endDate' => $end 
    )); 

市場は、私が見てみたい国ですので、それは英国であると仮定することができます。だから、私は英国で予約されたすべてのフライトを見ている。

これらをループして航空会社にvalを追加し、それをjsonファイルに追加するにはどうすればよいですか?

while ($row = $stmt->fetch()) { 

     if ($row['BookDate'] == $BookDate) { 

      $airline_sales_made_per_day += $row['BkngVal']; 
     } 
     else { 
      if ($count > 0) { 
       $data[] = array(
        'date' => $BookDate, 
        'airline sales made per day' => $airline_sales_made_per_day 
       ); 
      } 
      $count++; 
     } 
    } 

私はそれがないすべてのように、この文句を言わない仕事はとても基本的に配列に問い合わせを行う複数の航空会社の予約と値を持つ複数の日付を作成している知っています。

私はちょうどそれを行う方法を考える。

ご協力いただければ幸いです。

は、ORDER BY句で2番目のフィールドとして、航空会社コードで

+0

私はそれがjsonになるとちょっとした初心者だと認めますが、それは私によく書かれたjsonのようには見えません。 – Strawberry

+1

ORDER BY句の2番目のフィールドとして航空会社コードで注文します。次に、db行のループ内で、現在の行の航空会社のコードが前の行のコードと異なるまで合計に加算を続けます。その時点で配列に書き込み、次の日付に達するまでプロセスを繰り返します。 – ADyson

+0

@strawberry - それはひどくフォーマットされていますが、それは私が望むものの単なる例でした。 – Andrew

答えて

0

注文をいただき、ありがとうございます。次に、db行のループ内で、現在の行の航空会社のコードが前の行のコードと異なるまで合計に加算を続けます。その時点で配列に書き込み、次の日付に達するまでプロセスを繰り返します。