INSERT nur wenn Eintrag noch nicht vorhanden ist
am 09.10.2006 16:19:06 von joerg.reichelt
Ich habe folgendes Problem welches ich gerne mit SQL in einem Schritt
lösen würde:
Es gibt eine Tabelle TAB:
ID | Anzahl
-----|----------
1 | 2
2 | 1
3 | 5
Jetzt soll folgender Eintrag eingefügt werden:
ID | Anzahl
-----|----------
4 | 1
Dannach soll die Tabelle dann folgendermaßen aussehen:
ID | Anzahl
-----|----------
1 | 2
2 | 1
3 | 5
4 | 1
So weit, so gut. Das ist ja eine einfaches INSERT. Wenn jetzt aber
folgender Eintrag eingefügt werden soll...
ID | Anzahl
-----|----------
2 | 2
...möchte ich keine neue Zeile in meiner Tabelle sondern diese nur dem
bereits vorhandenen Eintrag mit dieser ID dazuaddieren:
ID | Anzahl
-----|----------
1 | 2
2 | 3 <--- Hier wurde der Wert hinzuaddiert.
3 | 5
4 | 1
Ich kann mir das Ergebnis im Nachhinein mit SELECT, SUM() und GROUP BY
Anweisungen so filtern, daß ich genau das gewünschte Ergebnis
bekomme.
Ich möchte jetzt aber nicht erst alles in die Tabelle schreiben und
dannach zusammenfassen, sonders alles am liebsten gleich beim INSERT
zusammenfassen.
Meine Frage ist, ob das geht und wie das INSERT Statement aussehen
muss.
Vielen Dank
Re: INSERT nur wenn Eintrag noch nicht vorhanden ist
am 09.10.2006 16:26:18 von muellerrobert
Jörg wrote:
>
> Es gibt eine Tabelle TAB:
>
> ID | Anzahl
> -----|----------
> 1 | 2
> 2 | 1
> 3 | 5
>
>
> Jetzt soll folgender Eintrag eingefügt werden:
>
> ID | Anzahl
> -----|----------
> 4 | 1
>
>
> Dannach soll die Tabelle dann folgendermaßen aussehen:
>
> ID | Anzahl
> -----|----------
> 1 | 2
> 2 | 1
> 3 | 5
> 4 | 1
>
> So weit, so gut. Das ist ja eine einfaches INSERT. Wenn jetzt aber
> folgender Eintrag eingefügt werden soll...
>
> ID | Anzahl
> -----|----------
> 2 | 2
>
> ...möchte ich keine neue Zeile in meiner Tabelle sondern diese nur dem
> bereits vorhandenen Eintrag mit dieser ID dazuaddieren:
>
> ID | Anzahl
> -----|----------
> 1 | 2
> 2 | 3 <--- Hier wurde der Wert hinzuaddiert.
> 3 | 5
> 4 | 1
>
>
> Ich kann mir das Ergebnis im Nachhinein mit SELECT, SUM() und GROUP BY
> Anweisungen so filtern, daß ich genau das gewünschte Ergebnis
> bekomme.
> Ich möchte jetzt aber nicht erst alles in die Tabelle schreiben und
> dannach zusammenfassen, sonders alles am liebsten gleich beim INSERT
> zusammenfassen.
>
> Meine Frage ist, ob das geht und wie das INSERT Statement aussehen
> muss.
>
http://dev.mysql.com/doc/refman/5.1/de/insert-on-duplicate.h tml
>
> Vielen Dank
HTH Robert
Re: INSERT nur wenn Eintrag noch nicht vorhanden ist
am 09.10.2006 16:43:15 von joerg.reichelt
Robert Müller schrieb:
> Jörg wrote:
>
> >
> > Es gibt eine Tabelle TAB:
> >
> > ID | Anzahl
> > -----|----------
> > 1 | 2
> > 2 | 1
> > 3 | 5
> >
> >
> > Jetzt soll folgender Eintrag eingefügt werden:
> >
> > ID | Anzahl
> > -----|----------
> > 4 | 1
> >
> >
> > Dannach soll die Tabelle dann folgendermaßen aussehen:
> >
> > ID | Anzahl
> > -----|----------
> > 1 | 2
> > 2 | 1
> > 3 | 5
> > 4 | 1
> >
> > So weit, so gut. Das ist ja eine einfaches INSERT. Wenn jetzt aber
> > folgender Eintrag eingefügt werden soll...
> >
> > ID | Anzahl
> > -----|----------
> > 2 | 2
> >
> > ...möchte ich keine neue Zeile in meiner Tabelle sondern diese nur dem
> > bereits vorhandenen Eintrag mit dieser ID dazuaddieren:
> >
> > ID | Anzahl
> > -----|----------
> > 1 | 2
> > 2 | 3 <--- Hier wurde der Wert hinzuaddiert.
> > 3 | 5
> > 4 | 1
> >
> >
> > Ich kann mir das Ergebnis im Nachhinein mit SELECT, SUM() und GROUP BY
> > Anweisungen so filtern, daß ich genau das gewünschte Ergebnis
> > bekomme.
> > Ich möchte jetzt aber nicht erst alles in die Tabelle schreiben und
> > dannach zusammenfassen, sonders alles am liebsten gleich beim INSERT
> > zusammenfassen.
> >
> > Meine Frage ist, ob das geht und wie das INSERT Statement aussehen
> > muss.
> >
>
> http://dev.mysql.com/doc/refman/5.1/de/insert-on-duplicate.h tml
>
> >
> > Vielen Dank
>=20
> HTH Robert
Genau was ich gesucht habe. Danke.
Gruß Jörg