MYSQLデータベースに2つのテーブルがあり、それらをビューでマージする必要があります。 両方のテーブルで正しい結果を得るには数学を熟読しなければなりません。同じ日にそれらを注文しなければなりません。異なる列で複数の合計を実行してビューを作成する
最初の表は、以下のいずれかのようで、それはchiusure
と呼ばれています:
+----+------------+--------+--------+---------+------+----+
| id | data | totale | sconti | annulli | resi | sf |
+----+------------+--------+--------+---------+------+----+
| 1 | 2016-03-01 | 153.82 | 1.07 | 0.00 | 0.00 | 34 |
| 2 | 2016-03-02 | 241.58 | 0.01 | 0.00 | 0.00 | 32 |
| 3 | 2016-03-03 | 0.00 | 0.01 | 0.00 | 0.00 | 0 |
| 4 | 2016-03-04 | 0.00 | 0.00 | 0.00 | 0.00 | 0 |
| 5 | 2016-03-05 | 0.00 | 0.00 | 0.00 | 0.00 | 0 |
+----+------------+--------+--------+---------+------+----+
秒以下の表は、1のようなもので、それはemergenza
と呼ばれています:
+----+------------+----------+--------+
| id | data | ora | totale |
+----+------------+----------+--------+
| 1 | 2016-03-04 | 09:30:00 | 2.20 |
| 2 | 2016-03-04 | 09:40:00 | 9.00 |
| 3 | 2016-03-04 | 09:50:00 | 5.00 |
|....|............|..........|........|
| 27 | 2016-03-05 | 09:14:00 | 4.40 |
| 28 | 2016-03-05 | 09:27:00 | 5.00 |
| 29 | 2016-03-05 | 09:33:00 | 2.20 |
|....|............|..........|........|
+----+------------+----------+--------+
私はここに難しい何されますemergenza
テーブルには、同じ日付の複数の行があります。別のビュー(view_emergenza
)で、私はこのように、日付によってそれらをグループ化:
SELECT
data,
sum(totale) AS chiusura,
count(id) AS sf
FROM emergenza
GROUP BY DAY(data);
を結果は次のとおりです。
+------------+----------+----+
| data | chiusura | sf |
+------------+----------+----+
| 2016-03-04 | 178.90 | 26 |
| 2016-03-05 | 330.55 | 52 |
| 2016-03-06 | 333.55 | 46 |
| 2016-03-07 | 272.40 | 31 |
| 2016-03-08 | 169.40 | 28 |
| 2016-03-09 | 223.40 | 20 |
| 2016-03-10 | 206.00 | 19 |
| 2016-03-11 | 157.50 | 22 |
+------------+----------+----+
また私は2つのテーブルを合計する前にいくつかの数学を実行する必要があります。
SELECT data, (totale - annulli - resi) AS chiusura, sf
FROM chiusure
結果は次のとおりです:私は1つのユニークなビューに2つのビューをマージする。この時点で
+------------+----------+----+
| data | chiusura | sf |
+------------+----------+----+
| 2016-03-01 | 153.82 | 34 |
| 2016-03-02 | 241.58 | 32 |
| 2016-03-03 | 0.00 | 0 |
| 2016-03-04 | 0.00 | 0 |
| 2016-03-05 | 0.00 | 0 |
+------------+----------+----+
ビュー(view_chiusure
)で、私は希望の結果を達成するために数学のこの種を施行し:
- GROUP BY DAY(データ)データ
- (chiusure.totale - chiusure.annulli - chiusure.resi)AS + [和(emergenza.totale)GROUP emergenza.data WHERE emergenza.data = chiusure.data]
- chiusure.sf + [カウント(emergenza.id)emergenza.data WHERE emergenza.data = chiusure.data BY GROUP]
UPDATE BY
私はこの方法で試しました:
SELECT
C.data,
C.chiusura + (SELECT E.chiusura FROM view_emergenza E WHERE E.data = C.data) AS chiusura,
C.sf + (SELECT E.sf FROM view_emergenza E WHERE E.data = C.data) as sf
FROM view_chiusure C
が、view_chiusure.chiusura
とview_chiusure.sf
は完全に無視されるようだ
+------------+----------+------+
| data | chiusura | sf |
+------------+----------+------+
| 2016-03-01 | NULL | NULL |
| 2016-03-02 | NULL | NULL |
| 2016-03-03 | NULL | NULL |
| 2016-03-04 | 178.90 | 26 |
| 2016-03-05 | 330.55 | 52 |
| 2016-03-06 | 333.55 | 46 |
| 2016-03-07 | 272.40 | 31 |
| 2016-03-08 | 169.40 | 28 |
| 2016-03-09 | 223.40 | 20 |
| 2016-03-10 | 206.00 | 19 |
+------------+----------+------+
結果は
+------------+----------+------+
| data | chiusura | sf |
+------------+----------+------+
| 2016-03-01 | 153.82 | 34 |
| 2016-03-02 | 241.58 | 42 |
| 2016-03-03 | 0.00 | 0 |
| 2016-03-04 | 178.90 | 26 |
| 2016-03-05 | 330.55 | 52 |
| 2016-03-06 | 333.55 | 46 |
| 2016-03-07 | 272.40 | 31 |
| 2016-03-08 | 169.40 | 28 |
| 2016-03-09 | 223.40 | 20 |
| 2016-03-10 | 206.00 | 19 |
+------------+----------+------+
2つのテーブルをマージし、合計することが可能ですすべきですか?はいの場合、どうすればいいですか?
MySQLまたはSQL Serverのどちらを使用しているかを明確にしてください。 2つの異なるRDBMS用のタグがあります。 –
@CᴏʀʏMYSQL。一定。 – dcdeiv