-1

たとえば、mysql テーブルに ID とタイムスタンプがあるとします。いくつかのレコードが含まれています。各行の挿入時間差をphpで見つけて保存する方法、つまり、行2の挿入時間を行1と比較して結果を保存し、行3と行2を比較して結果を保存する方法......

メッセージの名前にテーブルがあり、フィールドは

id int(11), 
timestamp int(11),
body_xml text, 
chatname text 

このテーブルにはチャット情報が含まれており、合計チャット時間と番号を確認する必要があります。ID を使用して特定のユーザーが利用できる会話の数。そこで、各行の時間差を見つけたいのですが、時間差が10分以上ある場合は、新しい会話と見なします。

私の仕事は、特定のユーザーについての合計チャット時間を見つけることです。そのユーザーがスカイプで利用できる会話の数。

ここで、すべてのチャット情報を mysql テーブルに保存します。

-------------------------------------------------- ----------------------------------------------
id タイムスタンプ メッセージ名
-------------------------------------------------- ----------------------------------------------
1 2012-10-11 11:18:34 こんにちはラム
2 2012-10-11 11:19:14 hw ru ram
3 2012-10-11 11:20:55 細かいラム
4 2012-10-11 11:55:03 そこにラム
5 2012-10-11 11:56:21 はいラム
6 2012-10-11 11:57:33 その後ラム

上記のテーブルでは、id 1 から 3 までの時間差は 10 分未満ですが、id 4 は id 3 との時間差が 10 分を超えているため、ここでは新しい会話と見なし、id 1 から 3 までの合計時間を変数に格納して、 4 から 6 の合計時間を同じ変数に更新します。ここでは合計会話は 2 です。

Total No. of converation 2 Total Time is xx:xx として出力する必要があります

このコードを試しました

SELECT A.id, A.timestamp, (B.timestamp - A.timestamp) AS timedifference
FROM time_diff A CROSS JOIN time_diff B WHERE B.id IN (SELECT MIN (C.id) FROM time_diff C WHERE C.id > A.timestamp)
A.id ASCで注文

nullの結果が得られました

4

1 に答える 1

1

さて、ここに手順があります:

  1. ALTER TABLE時差の行を追加する必要がある場合は、google mysql
  2. 結合についてのグーグル、またはこのリンクはかなり良いです。なんで?id列に基づいてテーブルを結合したいが、id+1片側に結合したい。ID がストレート シーケンスでない場合は、次のようにできますselect r1.* , (select max() from yourTable r2 where r1.id > r2.id) from yourTable r1
  3. timestampdiff() 関数について読む
  4. 手順 2 と 3 を理解したら、SQLSELECTステートメントを作成し、必要な結果が得られるかどうかを確認します。
  5. ステップ 4 が必要な場合は、このSELECTステートメントをステートメントに変換しますUPDATE
  6. 残りの計算は、PHP で行う方が適切です。
  7. まだ質問が残っている場合は、戻ってきてください。喜んでお手伝いさせていただきます。

幸運を。

于 2012-10-05T08:07:02.547 に答える