insert ... select Frage
am 21.03.2007 19:31:28 von Kay Schulz
Hallo zusammen,
ich habe eine Frage, die ich mit der Doku nicht lösen konnte.
ich mache manuell einen insert:
insert into Tabelle1 (B, D, We, Wa, Art) values ('C1', '2007-05-01',
2204.31, 'E', 'g' );
So weit so gut.
Ich würde jetzt aber gerne den Wert We=2204.31 ausrechnen und
dann einfügen.
Also in Prinzip so:
insert into Tabelle1 (B, D, We, Wa, Art) values ('C1', '2007-05-01',
select sum(...)-Tabelle3.wert from Tabelle2 where ... , 'E', 'g' );
Aber das geht so natürlich nicht.
Aber mit
insert into Tabelle1 (B, D, We, Wa, Art) select sum()...
geht so ja auch nicht.
Also wie geht es?
Danke
Kay
Re: insert ... select Frage
am 21.03.2007 19:42:52 von stefano picco
Hi Kay,
Kay Schulz wrote:
> ...
> So weit so gut.
> Ich würde jetzt aber gerne den Wert We=2204.31 ausrechnen und
> dann einfügen.
> Also in Prinzip so:
> insert into Tabelle1 (B, D, We, Wa, Art) values ('C1', '2007-05-01',
> select sum(...)-Tabelle3.wert from Tabelle2 where ... , 'E', 'g' );
berechne den doch bevor du diese Anweisung machst und setz dann das
Ergebnis als Variable in das SQL Statement.
hth
Stefano
--
..S.P.I.C stefano picco internet concepts http://www.spic.de
::::: part of spicOne multimedia http://www.spicone.de :::::
>> http://blog.stefano-picco.de - http://www.mythos77.de <<
visit http://www.typopolis.de & http://forum.motion-design.de
Re: insert ... select Frage
am 21.03.2007 19:51:02 von Kay Schulz
> berechne den doch bevor du diese Anweisung machst und setz dann das
> Ergebnis als Variable in das SQL Statement.
>
wow das war schnell.
aber ich habe keine ahnung wie ich das machen soll.
kann ich das direkt in mysql machen (wie)
oder meinst du ich solle das in einem shellscript machen?
kay
Re: insert ... select Frage
am 21.03.2007 19:51:46 von Helmut Chang
Kay Schulz schrieb:
> ich habe eine Frage, die ich mit der Doku nicht lösen konnte.
> ich mache manuell einen insert:
> insert into Tabelle1 (B, D, We, Wa, Art) values ('C1', '2007-05-01',
> 2204.31, 'E', 'g' );
>
> So weit so gut.
> Ich würde jetzt aber gerne den Wert We=2204.31 ausrechnen und
> dann einfügen.
> Also in Prinzip so:
> insert into Tabelle1 (B, D, We, Wa, Art) values ('C1', '2007-05-01',
> select sum(...)-Tabelle3.wert from Tabelle2 where ... , 'E', 'g' );
>
> Aber das geht so natürlich nicht.
> Aber mit
> insert into Tabelle1 (B, D, We, Wa, Art) select sum()...
> geht so ja auch nicht.
So ähnlich.
INSERT INTO Tabelle1 (B, D, WE, WA, Art)
SELECT 'C1', '2007-05-01', SUM(...),...
gruss, heli
Re: insert ... select Frage
am 21.03.2007 19:55:35 von stefano picco
Hi Kay,
Kay Schulz wrote:
> wow das war schnell.
> aber ich habe keine ahnung wie ich das machen soll.
> kann ich das direkt in mysql machen (wie)
> oder meinst du ich solle das in einem shellscript machen?
vergiss es, dachte das wäre die PHP NG gewesen hier, drum funktioniert
mein Ansatz evtl. doch nicht wirklich.
Aber Helmut hat ja schon eine Lösung geschickt!
sorry
Stefano
--
..S.P.I.C stefano picco internet concepts http://www.spic.de
::::: part of spicOne multimedia http://www.spicone.de :::::
>> http://blog.stefano-picco.de - http://www.mythos77.de <<
visit http://www.typopolis.de & http://forum.motion-design.de
Re: insert ... select Frage
am 21.03.2007 20:15:22 von Kay Schulz
Danke Helmut
Habe ich probiert, aber ganz so einfach finde ich das nicht.
INSERT INTO Tabelle1 (B, D, We, Wa, Art)
select 'Test', '2007-04-01',
select sum(case when reinraus='in' then wert else -wert end) from
Tabelle2 where year(datum)=2007 and month(datum)=3 and b_id=1;, 'E', 'g';
Und eigentlich will ich die Summe von einem Betrag abziehen, den
ich via select hole. Also:
select wert from Tabelle2 - sum(case when reinraus='in' then wert else
-wert end) from Tabelle2 where year(datum)=2007 and month(datum)=3 and
b_id=1;
Sorry, ich habe einige Versionen probiert, aber mysql nimmt nichts
davon.
Kay
Nimmt er nicht
> So ähnlich.
>
> INSERT INTO Tabelle1 (B, D, WE, WA, Art)
> SELECT 'C1', '2007-05-01', SUM(...),...
>
> gruss, heli
Re: insert ... select Frage
am 21.03.2007 20:45:00 von Kay Schulz
Hi
ich habe zwar keine AHnung, aber folgendes scheint zu gehen:
INSERT INTO Tabelle1 (B, D, We, Wa, Art) select 'Test', '2007-04-01',
(select wert from Tabelle1 where month(datum)=month(curdate()) and
year(datum)=year(curdate()) and BA like '%TEXT%')+(sum(case when
Tabelle2.reinraus='in' then wert else -wert end)), 'E', 'g' from
Tabelle2 where b_id=1 and year(datum)=2007 and month(datum)=3;
Danke für den Input
Kay
Re: insert ... select Frage
am 21.03.2007 21:27:19 von Daniel Fischer
stefano picco!
> vergiss es, dachte das wäre die PHP NG gewesen hier, drum funktioniert
> mein Ansatz evtl. doch nicht wirklich.
Doch doch, das geht schon auch, z.B. SELECT ... INTO eine Variable.
Gruß
Daniel
Re: insert ... select Frage
am 21.03.2007 22:49:30 von Helmut Chang
Kay Schulz schrieb:
> select 'Test', '2007-04-01',
> select sum(case when reinraus='in' then wert else -wert end) from
> Tabelle2 where year(datum)=2007 and month(datum)=3 and b_id=1;, 'E', 'g';
So. Und jetzt überlegst du, ob das da oben ein gültiges SELECT-Statement
ist.
>> INSERT INTO Tabelle1 (B, D, WE, WA, Art)
>> SELECT 'C1', '2007-05-01', SUM(...),...
^^^^
Und liest noch einmal *genau*, wie mein Ansatz aussieht.
gruss, heli