2017-06-28 9 views
1

私はテーブルOrdiniuaフィールド "arrivato" の合計を持っているしたいのですが、 "和" を書いたWhre私は2つのテーブルmysqlの他のテーブルから合計を挿入するには?

TABLE ORDINIUA

| ordiniua(pk) | fornitore | elemento | stimaarrivo | arrivato | 
---------------------------------------------------------------- 
| 8ec230  | ABB  | 17 | 10/10/2017 | 0  | 
| 8ec520  | STE  | 147 |    | 1  | 
| 8ec234  | FIS  | 17 | 25/06/2017 | 1  | 

TABLE四

| elemento(pk) | numeroco |descrizione| colonne | Ordini_Arrivati| 
------------------------------------------------------------------ 
| 22   | 251.06/17 |   | 6 | the sum  | 
| 17   | 168.05/17 |   | 0 | the sum (1) | 

を持っています「要素」は同じです。例:8ec520のarrivatoは0、8ec234のarrivatoは1、合計は1です。

この値をaumatically生成することは可能ですか(「sum if」のように)? はいの場合はどうすればよいですか?

+0

テーブルを追加して問題を少し良く説明してください – DaAmidza

+0

参照:[私は非常に単純なSQLクエリであると思われるMCVEを提供するのはなぜですか?](https://meta.stackoverflow .com/questions/333952/what-should-i-provide-an-mcve-for-what-to-my-to-be-a-very-simple-sql-query) – Strawberry

+0

SUMとGROUP BYも参照してください。 – Strawberry

答えて

1

あなたがしたいことをするにはMySQL Triggersを使用してください。いつINSERT新しい行:

DELIMITER $$ 

CREATE TRIGGER insertDatabase 
BEFORE INSERT ON ordiniua 
FOR EACH ROW 
    BEGIN 
     UPDATE quadri s 
      SET s.Ordini_Arrivati = s.Ordini_Arrivati + new.arrivato 
     WHERE s.elemento = new.elemento; 
END;$$ 
DELIMITER ; 

そして、あなたUPDATE既存の行。 UPDATEに注意してください。これは、以前の値とarrivalvato列の現在の値との差異を知る必要があるためです。

DELIMITER $$ 

CREATE TRIGGER updateDatabase 
BEFORE UPDATE ON ordiniua 
FOR EACH ROW 
    BEGIN 
     UPDATE quadri s 
      SET s.Ordini_Arrivati = s.Ordini_Arrivati + new.arrivato 
     WHERE s.elemento = new.elemento; 
END;$$ 
DELIMITER ; 

あなたはDELETEにトリガーを持つようにしたいことが、あなたが見ることができるよう、あなただけのロジックに従わなければなりません。あなたに役立つことを望みます

関連する問題