0

次のようなテーブルがあります。

Client_ID | Order_ID | 
10        | 1        | 
10        | 2        |
10        | 3        |
14        | 6        |
14        | 7        |
14        | 9        |

前の Client_ID を記憶して変更されたかどうかを確認するループを作成する代わりに、client_id グループを証拠としてこの結果セットを出力する PHP の洗練された方法はありますか。

クライアント 10:

  • 注文1
  • 注文 2
  • 注文 3

クライアント 14:

  • 注文 6
  • 注文 7
  • 注文9
4

3 に答える 3

2

SQL でできることは、ある行から次の行への関係を保持しない一連の行をキャプチャすることだけです。おそらくあなたが想像したようなループを使用して、これらの結果に何らかの構造を課すのは PHP 次第です。

$last_client_id = null;
while($row = mysql_fetch_assoc($results)) {
    if ($row['client_id'] != $last_client_id) {
        // Do whatever it is you do for each new client
    }
    // Do whatever it is you do for each order
    $last_client_id = $row['client_id'];
}
于 2009-09-07T20:52:36.847 に答える
1

GROUP_CONCAT 関数を見てみましょう: http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

編集:データベースから取得すると誤って想定したと思います:/

于 2009-09-07T20:54:38.413 に答える
1

ショート:いいえ。

Long: 新しい ID が来ていることを前の反復で他にどのように知ることができますか? ここには何らかのケース処理が必要です。それなしでは不可能です。

于 2009-09-07T20:55:16.820 に答える