In einer Tabelle X Änderungen durchführen
KOmplex
- datenbank
Hallo, hallo.
Ich möchte folgendes mit einem Query lösen.
Wir haben ein Post-Request mit den ausgefüllten Input Feldern: 0,1,3,4,6
Und den unausgefüllten - leeren Feldern: 2,5,7
In der Datenbank sind Felder 0,1,3,5,7 schon vorhanden, 4 und 6 noch nicht.
Es soll nun folgendes passieren:
0,1,3 sind vorhanden und auch ausgefüllt worden -> UPDATE
2 ist leer und war auch noch nicht vorhanden -> nichts
5,7 sind vorhanden aber unausgefüllt -> DELETE
4,6 sind ausgefüllt aber noch nicht vorhanden -> INSERT
Klingt kompliziert - und wie ist das nun zu lösen?
Wie kann ich also updaten, einfügen, löschen mit einem großen Query?
Die Tabelle hat folgende Spalten:
Userid, Inputfeldid, Information
Vorhandene Datensätze:
1, 0, information1
1, 1, information2
1, 3, information3
1, 5, information4
1, 7, information5
Am Ende sollte es also so aussehen:
1, 0, neueinformation1
1, 1, neueinformation2
1, 3, neueinformation3
1, 4, GANZneueinformation1
1, 6, GANZneueinformation2
Ich kenne maximal INSERT ..ON DUPLICATE KEY UPDATE. Aber ich denke soweit komme ich damit nicht.
Was sagen die Experten?
Gruß,
KOmplex
Hi,
Wie kann ich also updaten, einfügen, löschen mit einem großen Query?
weiß nicht. Ich hätte aber eine Lösung mit zwei Queries anzubieten, falls Du nicht selbst drauf kommst.
Cheatah
Hi.
weiß nicht. Ich hätte aber eine Lösung mit zwei Queries anzubieten, falls Du nicht selbst drauf kommst.
Hm.
Also einfügen und updaten geht mit dem INSERT INTO.. ON DUPLICATE KEY UPDATE
wenn ich aber löschen will müsste ich ja sowas schreiben: "LÖSCHE X,Y,Z WO DER POST REQUEST 0 WAR ABER VORHER NICHT UND NOCH IN DER DATENBANK STEHT"
Dazu fürde mir spontan ja sowas einfallen aber das wären dann wieder mehrere Queries:
$x;
foreacht($_POST as $info){
if($info==='')
query("DELETE IF EXISTS ".$x." FROM table");
++$x;
}
hrmpf...
Hi,
Also einfügen und updaten geht mit dem INSERT INTO.. ON DUPLICATE KEY UPDATE
ja, und Einfügen geht mit INSERT INTO.
wenn ich aber löschen will müsste ich ja sowas schreiben: "LÖSCHE X,Y,Z WO DER POST REQUEST 0 WAR ABER VORHER NICHT UND NOCH IN DER DATENBANK STEHT"
Nö. Wenn Du Datensätze löschen willst, musst Du was schreiben?
Dazu fürde mir spontan ja sowas einfallen aber das wären dann wieder mehrere Queries:
Jupp, zwei reichen aber.
Cheatah
Hi.
Jupp, zwei reichen aber.
Also ich komme nicht drauf. Hilf mir bitte.
Gruß.
Hi,
»» Jupp, zwei reichen aber.
Also ich komme nicht drauf. Hilf mir bitte.
erstens: Alles löschen.
Zweitens: Alles Benötigte einfügen.
Cheatah
Moin Moin!
erstens: Alles löschen.
... und fleißig die Daumen drücken, dass dabei keine Trigger und keine Foreign Key Constraints zuschlagen.
Zweitens: Alles Benötigte einfügen.
Alexander
echo $begrüßung;
» erstens: Alles löschen.
... und fleißig die Daumen drücken, dass dabei keine Trigger und keine Foreign Key Constraints zuschlagen.
Ich denke, wer Trigger setzen kann, braucht so eine Frage nicht zu stellen. Mit anderen Worten: Es ist unwahrscheinlich, dass Trigger hier im Einsatz sind. "Echte" FKs sicher auch nicht. Trigger und FKs sind ja nicht einfach so vorhanden (was man aus deiner Antwort herauslesen könnte), sondern müssen gezielt vom Verwender gesetzt werden.
echo "$verabschiedung $name";
Hi!
» » erstens: Alles löschen.
» ... und fleißig die Daumen drücken, dass dabei keine Trigger und keine Foreign Key Constraints zuschlagen.Ich denke, wer Trigger setzen kann, braucht so eine Frage nicht zu stellen.
Dann gehst Du davon aus, dass der Nutzer einer Datenbank auch dessen Ersteller ist - davon würde ich nicht immer ausgehen.
off:PP
Hello,
» » erstens: Alles löschen.
» ... und fleißig die Daumen drücken, dass dabei keine Trigger und keine Foreign Key Constraints zuschlagen.Ich denke, wer Trigger setzen kann, braucht so eine Frage nicht zu stellen.
Dann gehst Du davon aus, dass der Nutzer einer Datenbank auch dessen Ersteller ist - davon würde ich nicht immer ausgehen.
Ich hätte erst zuende lesen sollen. Siehe https://forum.selfhtml.org/?t=187526&m=1246586
Ich bin da Deiner Meinung.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
» erstens: Alles löschen.
... und fleißig die Daumen drücken, dass dabei keine Trigger und keine Foreign Key Constraints zuschlagen.Ich denke, wer Trigger setzen kann, braucht so eine Frage nicht zu stellen. Mit anderen Worten: Es ist unwahrscheinlich, dass Trigger hier im Einsatz sind. "Echte" FKs sicher auch nicht. Trigger und FKs sind ja nicht einfach so vorhanden (was man aus deiner Antwort herauslesen könnte), sondern müssen gezielt vom Verwender gesetzt werden.
Es soll auch schon mal vorgekommen sein, dass ein Verwender ein Query erstellen muss für eine Datenbank, die er z.B. mit dem System bekommen hat. Nachdem es immer mehr gute Shopsysteme u.ä. gibt, ist das sogar immer wahrscheinlicher, dass man da dann auch mal über Trigger stolpert.
Ich habe mir neulich nochmal einen abgebrochen, nun mal endlich den PostfixAdmin mit den anderen gewünschten Bausteinen gemeinsam für den Postfix zum Laufen zu bringen... Das Ding verwendet inzwischen InnoDB und echte Foreign Keys. Und in der erweiterten Beschreibung war sogar von Triggern die Rede.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg