• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

wenn vorhanden UPDATE sonst INSERT

Bourbon

Mitglied
Hallo Leute,

ich bin hier total am verzweifeln, weil ich einfach nicht den richten Syntax finde bzw. wenn ich was finde, ich immer nur Fehler bekomme.

Folgendes will ich umsetzen:
Tabelle "children" mit 4 Spalten: ID, group_ID, user_ID, numberofchildrens

Nutzer trägt Anzahl der Kinder pro Gruppe ein. Beispiel:
ID (AI);
group_ID =3
user_ID = 5
numberofchildrens = 8

Ist für den Nutzer mit ID 5 bereits ein Wert (numberofchildren) in der Gruppe mit ID 3 bereits vorhanden, soll der Wert geändert werden.

Theoretisch müsste es ja so funktionieren (kurz):

IF - (SELECT numberofchildren FROM children WHERE group_ID = 3 AND user_ID = 5) > 0
THAN - UPDATE
ELSE - INSERT

Nur praktisch scheitere ich daran :) Geht das vielleicht auch irgendwie anders?

//EDIT
Mist, irgendwie bin ich im falschen Unterforum gelandet. Kann ich das irgendwie verschieben oder dürfen das nur die Mods?
 
Hallo Leute,

ich bin hier total am verzweifeln, weil ich einfach nicht den richten Syntax finde bzw. wenn ich was finde, ich immer nur Fehler bekomme.

Folgendes will ich umsetzen:
Tabelle "children" mit 4 Spalten: ID, group_ID, user_ID, numberofchildrens

Nutzer trägt Anzahl der Kinder pro Gruppe ein. Beispiel:
ID (AI);
group_ID =3
user_ID = 5
numberofchildrens = 8

Ist für den Nutzer mit ID 5 bereits ein Wert (numberofchildren) in der Gruppe mit ID 3 bereits vorhanden, soll der Wert geändert werden.

Theoretisch müsste es ja so funktionieren (kurz):

IF - (SELECT numberofchildren FROM children WHERE group_ID = 3 AND user_ID = 5) > 0
THAN - UPDATE
ELSE - INSERT

Nur praktisch scheitere ich daran :) Geht das vielleicht auch irgendwie anders?

//EDIT
Mist, irgendwie bin ich im falschen Unterforum gelandet. Kann ich das irgendwie verschieben oder dürfen das nur die Mods?

Ich glaube du musst aus beiden Feldern ein UNIQUE machen.
Code:
ALTER TABLE children ADD UNIQUE(group_ID,user_ID);

Und dann:
Code:
INSERT INTO children (group_ID,user_ID,numberofchildren) VALUES (3,5,8)
ON DUPLICATE KEY UPDATE numberofchildren = 8;
 
Unique bedeutet doch, dass beides nur einmal vorkommen kann?
Aber sowohl die user_ID als auch die group_ID kann mehrfach vorkommen, die Kombination aber nur ein einziges mal.

Beispiel:
user_ID - group_ID
3 - 1 (Nutzer 3 ist Gruppenmitglied der Gruppe 1)
3 - 2 (Nutzer 3 ist Gruppenmitglied der Gruppe 2)
1 - 1 (Nutzer 1 ist Gruppenmitglied der Gruppe 1)
1 - 2 (Nutzer 1 ist Gruppenmitglied der Gruppe 2)
2 - 3 (Nutzer 2 ist Gruppenmitglied der Gruppe 3)

In dem Beispiel habe ich erstmal die Kinderanzahl weggelassen.
Das hier soll aber nicht möglich sein
3 - 1
3 - 1
 
Zuletzt bearbeitet:
Unique bedeutet doch, dass beides nur einmal vorkommen kann?
Aber sowohl die user_ID als auch die group_ID kann mehrfach vorkommen, die Kombination aber nur ein einziges mal.

Beispiel:
user_ID - group_ID
3 - 1 (Nutzer 3 ist Gruppenmitglied der Gruppe 1)
3 - 2 (Nutzer 3 ist Gruppenmitglied der Gruppe 2)
1 - 1 (Nutzer 1 ist Gruppenmitglied der Gruppe 1)
1 - 2 (Nutzer 1 ist Gruppenmitglied der Gruppe 2)
2 - 3 (Nutzer 2 ist Gruppenmitglied der Gruppe 3)

Nein, das ist kein einfaches Unique, sondern auf die Kombination beider Felder angewandt.
 
Zurück
Oben