insert ... select Frage
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
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
> 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
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
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
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) 07 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) 07 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
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) 07 and month(datum)=3;
Danke für den Input
Kay
Re: insert ... select Frage
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
Kay Schulz schrieb:
> select 'Test', '2007-04-01',
> select sum(case when reinraus='in' then wert else -wert end) from
> Tabelle2 where year(datum) 07 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