2017-02-02 3 views
1

MySQLデータベースにユーザ入力の詳細を持つテーブルがあります。各ユーザは1日3回詳細を入力できます。各入力のエントリ値を追加して計算し、それを各ターゲットと一致させて、それに応じて "TARGET ACHIEVED"または "TARGET MISSED"として列を埋めるようにします。各入力。ユーザ入力の合計を計算した後にMySQLのカラムを更新する

たとえば、私のSQLクエリは次のようになります。だから、

INSERT INTO employee_details(enquiry,retail, collection,booking, evaluation, test_drive, 
    home_visit, name, date,time,taget_status) 
values ('$enquiry', '$retail','$collection', '$booking', '$evaluation', '$test_drive', 
    '$home_visit', '$user_name', CURDATE(), '$time'); 

、ユーザーは1日3回、問い合わせの値を入力すると、それが実現した場合、その後、私はコラム「問い合わせ」の3つの入力の合計を計算し、チェックしたいです合計が10に等しい場合、列「target_status」は、それに応じて「目標達成済み」または「目標未達成」として更新されるべきである。そして、私は今日の終わりまでに昨日の計算をしたい。

誰でも進行方法の解決策を提案できますか?

+0

、あなたが今まで試してみましたが何を質問して状態を詳しく説明することはできますか? – Ruby

+0

@Ruby私はユーザーの入力のすべての詳細を持っているテーブルがあります。そして、ユーザーは各フィールドの詳細を1日3回入力します。そこで、特定のフィールドの入力を追加したいと思います。たとえば、上記の表の「照会」列の場合、ユーザーは1日に3回データを入力します。そして、目標は10に設定されます。そして、その日の終わりまでに、3つの入力を合計して10に達するかどうかを調べる必要があります。そして、その合計に応じて "target_status"列を更新します毎日の夜に、目標が達成されたかどうかを確認することができます。 – Pranami

答えて

0

場合によっては、target_statusを設定するために、その日の終わりを待つべきではありません。

あなたがINSERTを実行し、あなたがそれを行う前に、dateは「今日」であるとname$user_nameに等しいすべての場所を選択するたびに。あなたはそれをまとめることができるようにすれば、今日のためにそれぞれの元の照会値を、それが2だ場合は、ユーザーがちょうど今日のための彼の第三問い合わせを発行している知っている

  • :今日のため

    • 照会数を:あなたはすぐに持っています今日のためにお問い合わせの数は、3(2旧+あなたが挿入しようとしている新しいもの)とすぐに、データベースの構造は、この特定の場合には適切でない可能性があること、最新のお問い合わせ

    注意の上ごtarget_statusを挿入しているが、何も変えずに、私が概説したロジックが十分であるはずです。

  • +0

    次のクエリを使用して合計を取得しました。 SELECT SUM(照会)FROM employee_details WHERE name = 'merk' AND date = CURDATE()。この問合せはINSERT問合せの後に実行され、データが挿入されるたびに実行され、SUMを比較した後に列を更新します。しかし、私は3回目に挿入される各従業員のtarget_statusを取得して確認したいと思っていました。私は合計の最新ステータスを求めています。 – Pranami

    0

    チェックこの

    $sql = "UPDATE employee_details SET 
    enquiry_sum = (SELECT SUM(enquiry) FROM (SELECT * FROM employee_details WHERE date = CURDATE() AND name = 'merk') AS x) 
    WHERE date = CURDATE() AND name = 'merk'"; 
    
    +0

    私は問題に直面しています。以下のクエリを使用して特定の日の「照会」列のエントリの合計を表示しようとすると、私は希望の結果を得ます。 SELECT SUM(inquiry)FROM employee_details WHERE date = CURDATE()AND name = 'merk' "WHERE date = CURDATE();しかし、この値を同じテーブルの" enquiry_sum "カラムに挿入しようとすると、更新されています。私が使用しているクエリは次のとおりです:UPDATE employee_details SET enquiry_sum = "enquiry_sumとしてSELECT SUM(照会)FROM employee_details where date = CURDATE()AND name = 'merk'";あなたは何が間違っているかを確認して教えてください。 – Pranami

    +0

    これを参照してください:http://stackoverflow.com/questions/1955988/mysql-select-inside-update – Ruby

    +0

    あなたが提供したコードは動作していますが、問題は1つあります。照会の値を入力すると、照会の合計を計算するために最近の入力の数を取っていないが、その前の値を考慮して合計を計算する。たとえば、質問の値を3回入力すると、合計は第1および第2の入力のみで計算され、第3の入力は考慮されません。 – Pranami

    関連する問題