1

これが可能かどうかはわかりませんが、ここで説明します。

MySQLを使用しており、次のように出力を生成するステートメントを完了する必要があります。

completedateフィールドとenquirydateフィールドを含むテーブルがあります。

次のコードがあるこれらのフィールド間の時間差に関するデータを取得する必要があります

SELECT DATE (completedate) - DATE (enqdate) AS `timediff`, COUNT(*) AS TotalCount
FROM cia_enquiry
WHERE (DATEDIFF(CURDATE(), enqdate) < 30) AND completedate > 1
GROUP BY `timediff`
ORDER BY `timediff` ASC

上記のコードは、日付間の日数と過去30日以内の全体の総数を出力するだけです(完了していないエントリはカウントされません)。

ここで、「timediff」の結果を別のテーブルに対して参照し、そのテーブルから別のフィールドを取得する必要があります。

たとえば、timediff = 1の場合、別のテーブルで1のIDを見つけて、このテーブルから説明フィールドを返す必要があります。

最終的には、次のようなものになるはずです


timediffTotalCountの説明05224
時間以内
11324〜48時間
など........。

4

2 に答える 2

1

それは可能です。2つの選択肢があります

  1. クエリの結果を使用して一時テーブルを作成し、このテーブルを2番目のテーブルと結合します
  2. 最初のクエリをサブクエリとして使用し、それを2番目のテーブルと結合します

オプション1

create temporary table temp_tbl
select
   ...
;
# Important: create the indexes you need
alter table temp_tbl
   add index index1(field1), ... ;
# Now join your second table
select a.*, b.*
from temp_tbl as a join tbl2 as b on ...;

オプション2

select a.*, b.*
from (
    select ... # here is your query
    ) as a join tbl2 as b on ...

これがお役に立てば幸いです

于 2012-08-15T16:08:16.823 に答える
0

日付の計算により、小数点以下の値が得られます...

あなたが使用する必要がありますROUND()

または検索しCEILFLOOR機能します。

于 2012-08-15T16:00:17.947 に答える