Get

2016-05-03 6 views
-1

Ich habe 4 Tabellen mit gleichen Spalten (id & banka_id & miktar).Get

2 Tabellen Ergebnis (drink_earn, eat_earn) und

2 Tische Ausgaben (drink_spending, eat_spending)

|id|banka_id|miktar| 
---|--------|------| 
|1 |2  |20 | 
|2 |1  |20 | 
|3 |1  |30 | 

Meine Frage.

Wie kann ich alle in einer Zeile berechnen?

drink_earn: Tabelle SUM (miktar) ist = 50 $

eat_earn: Tabelle SUM (miktar) ist = 50 $


drink_spending: Tabelle SUM (miktar) ist = 15 $

eat_spending: Tabelle SUM (miktar) ist = 5


$

Ergebnis: drink_earn + eat_earn = 100 $

Ausgaben: drink_spending + eat_spending 20 $

Total: earnnings - Ausgaben = 80

$

und schließlich GROUP BY banka_id

Können Sie bitte Code schreiben Probe. Grüße.

+0

Wie erhalten Sie 50 $ von den Beispieldaten, die Sie angegeben haben? –

+0

ist nur ein Beispiel. Ich zeige nur meine Tabellenzeilen ID, Banka_ID, Miktar in der drink_earn bekommen 50 $ mit SUM (Miktar) verstehen? –

+0

Sie haben Recht @Strawberry Entschuldigung dafür. ich befestige es. und ich habe das gemacht und es funktioniert für mich. ist es wahr? ||| SELECT total. *, SUM (miktar) als miktartotal FROM (AUSWAHL * VON drink_earn UNION ALLE AUSWAHL * FROM eat_earn UNION ALLE WÄHLEN * FROM essen_spenden UNION ALLE WÄHLEN * FROM cekimler) AS gesamt GROUP BY banka_id' ||| –

Antwort

0

alle Tabellen in eine mit UNION Kombinieren ALL:

select banka_id, sum(earn) - sum(spend) as total 
from (
    select banka_id, miktar as earn, 0 as spend 
    from drink_earn 
    union all 
    select banka_id, miktar as earn, 0 as spend 
    from eat_earn 
    union all 
    select banka_id, 0 as earn, miktar as spend 
    from drink_spending 
    union all 
    select banka_id, 0 as earn, miktar as spend 
    from eat_spending 
) t 
group by banka_id 

Aber es wäre besser, wenn Sie mit einer zusätzlichen Spalte für Typ nur eine Tabelle in alle Daten hatte.

+0

Danke @Paul Spiegel seine Arbeit. aber das ist Arbeit zu (SELECT insgesamt. *, Sum (miktar) AS miktartotal FROM (SELECT * VON drink_earn UNION ALL SELECT * VON eat_earn UNION ALL SELECT * VON eat_spending UNION ALL SELECT * VON drink_spending) AS gesamt GROUP BY banka_id ') ist es wahr? –

+0

@ IsmailAltunören - Der Unterschied ist, dass Sie eine Summe aller Einnahmen und Ausgaben zurückgeben. Aber Sie brauchen Summe (Verdienst) - Summe (Ausgaben) wie Sie in Ihrer Frage geschrieben haben. –

+0

Nur gefragt ob es stimmt @Paul Spiegel. Danke für Ihre Hilfe. –