nochmals Werte subtrahieren
nochmals Werte subtrahieren
am 08.01.2007 19:06:19 von Kay Schulz
Hi
ich habe folgendes:
select sum(case when reinraus='in' then wert else -wert end) AS DELTA
from Tabelle1 where year(datum)=2007;
Diesen Wert möchte ich von dem Wert mit folgendem select
abziehen.
select wert from Tabelle2 where id=3;
Geht das irgendwie?
Danke
Kay
Re: nochmals Werte subtrahieren
am 08.01.2007 21:11:53 von Dominik Echterbruch
Kay Schulz wrote:
> Hi
> ich habe folgendes:
> select sum(case when reinraus='in' then wert else -wert end) AS DELTA
> from Tabelle1 where year(datum)=2007;
>
> Diesen Wert möchte ich von dem Wert mit folgendem select
> abziehen.
> select wert from Tabelle2 where id=3;
OK, ich glaube, das ist jetzt wirklich zu nahe liegend, als daß man
darauf selber kommen würde ;)
SELECT SUM(CASE WHEN reinraus = 'in' THEN wert ELSE -wert END) - (SELECT
wert FROM tabelle2 WHERE id = 3) AS delta
FROM tabelle1
WHERE YEAR(datum) = 2007
Nicht schön und EPLAIN würde es vermutlich hassen, aber es geht. Sofern
das Performanceprobleme gibt, überlasse ich dir die Optimierung :)
Grüße,
Dominik
--
Norbert Melzer in d.c.d.mysql:
F: Wie verstehe ich diese FAQ am besten?
A: Studieren Sie Datanbank-Design und lesen Sie anschliessend alles nochmal
Re: nochmals Werte subtrahieren
am 11.01.2007 21:37:59 von Kay Schulz
Hi
>
> SELECT SUM(CASE WHEN reinraus = 'in' THEN wert ELSE -wert END) - (SELECT
> wert FROM tabelle2 WHERE id = 3) AS delta
> FROM tabelle1
> WHERE YEAR(datum) = 2007
>
tut gut. Ich führe das viermal aus, auf vier verschiedene tabellen
Also so:
select (select wert from ks where id = 1) + sum(case when reinraus='in'
then wert else -wert end) AS KS1 from GTabelle where year(datum)=2007
and month(datum)=01 and b_id=1;
das 2. Mal:
select (select wert from ks where id = 2) + sum(case when reinraus='in'
then wert else -wert end) AS KS2 from GTabelle where year(datum)=2007
and month(datum)=01 and b_id=2;
usw.
Was ich eigentlich auch gerne hätte wäre:
1. Ergebnis + 2. Ergebnis + 3.Ergebnis*1.6 + 4. Ergebnis*1.6
Aber wie ich das machen kann geht über meine Fähigkeiten.
Danke
Kay
Re: nochmals Werte subtrahieren
am 11.01.2007 22:10:21 von dafox
Kay Schulz schrieb:
>> SELECT SUM(CASE WHEN reinraus = 'in' THEN wert ELSE -wert END) -
>> (SELECT wert FROM tabelle2 WHERE id = 3) AS delta
>> FROM tabelle1
>> WHERE YEAR(datum) = 2007
> tut gut. Ich führe das viermal aus, auf vier verschiedene tabellen
> select (select wert from ks where id = 1) + sum(case when reinraus='in'
> then wert else -wert end) AS KS1 from GTabelle where year(datum)=2007
> and month(datum)=01 and b_id=1;
Du führst das nicht auf vier verschiedene Tabellen aus, sondern nutzt
immer die selbe Tabelle, sowohl in der äußeren, als auch in der inneren
Abfrage.
> Was ich eigentlich auch gerne hätte wäre:
> 1. Ergebnis + 2. Ergebnis + 3.Ergebnis*1.6 + 4. Ergebnis*1.6
SELECT (SELECT ...) + (SELECT ...) + (SELECT ...) * 1.6 ...;
Re: nochmals Werte subtrahieren
am 12.01.2007 06:14:35 von Kay Schulz
>
> Du führst das nicht auf vier verschiedene Tabellen aus, sondern nutzt
> immer die selbe Tabelle, sowohl in der äußeren, als auch in der inneren
> Abfrage.
Stimmt
>
>> Was ich eigentlich auch gerne hätte wäre:
>> 1. Ergebnis + 2. Ergebnis + 3.Ergebnis*1.6 + 4. Ergebnis*1.6
>
>
> SELECT (SELECT ...) + (SELECT ...) + (SELECT ...) * 1.6 ...;
Das werde ich mal versuchen. Ob das wirklich geht....
Würde mich aber freuen wenn es so ist.
Danke jedenfalls
Kay
Re: nochmals Werte subtrahieren
am 12.01.2007 21:24:16 von Kay Schulz
tut
DANKE
Kay