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
Kay Schulz [ Mi, 21 März 2007 19:31 ] [ ID #1664030 ]

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
stefano picco [ Mi, 21 März 2007 19:42 ] [ ID #1664031 ]

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
Kay Schulz [ Mi, 21 März 2007 19:51 ] [ ID #1664032 ]

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
Helmut Chang [ Mi, 21 März 2007 19:51 ] [ ID #1664033 ]

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
stefano picco [ Mi, 21 März 2007 19:55 ] [ ID #1664034 ]

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
Kay Schulz [ Mi, 21 März 2007 20:15 ] [ ID #1664035 ]

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
Kay Schulz [ Mi, 21 März 2007 20:45 ] [ ID #1664036 ]

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
Daniel Fischer [ Mi, 21 März 2007 21:27 ] [ ID #1664040 ]

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
Helmut Chang [ Mi, 21 März 2007 22:49 ] [ ID #1664042 ]
Datenbanken » de.comp.datenbanken.mysql » insert ... select Frage

Vorheriges Thema: ADO Filter erzeugt nach Serverwechsel einen Fehler.
Nächstes Thema: [ENG] need guru with Having...