Wie kann man (bestenfalls) in einem SQL-Statement einen INSERT INTO..
Befehl ausführen der jedoch nur denn ausgeführt wird, wenn ein Wert (nicht der Key) noch NICHT vorhanden ist. Es soll kein UPDATE bei schon vorhandenen Einträgen durchgeführt werden.
Der Vollständigkeit halber hier die relevanten Felder der Tabelle:
CREATE TABLE tabelle(
ID AUTO_ .... NOT NULL,
hash varchar(32),
value1 varchar(255),
value2 varchar(255),
....
noch ein paar felder für
timestamp usw.
PRIMARY KEY(ID));
Das zu erreichende Ziel ist leicht erklärt:
hash ist ein md5 schlüssel dem jeweils einträge zugeordnet werden value1 und value2.
Die Tabelle wird aus einer datei heraus aktualisiert die erst mit fopen() und explode() aufbereitet werden muss.
Es liegt letztlich ein Array vor, dessen Werte sind Arrays mit diesen drei strings: hash,value1 und value2.
Es ist nicht anders zu bewerkstelligen, aber die Datei aus der aktualisiert wird muss immer komplett eingelesen werden. Die Reihenfolge in der Einträge geschrieben werden ändert sich ständig. Zudem muss die Datei immer alle Werte aus der DB beinhalten und erhält im Betrieb eben neue Einträge in die Tabelle sollen. Der Ablauf ist absolut unveränderlich.
Ich möchten nicht erst die Daten mit PHP auslesen und sie dann mit einer Schleife oder array_diff ausselektieren.
Es muss doch möglich sein das in das INSERT-Statement mittels WHERE und SUBSELECT einzubauen. Ich bin schon ganz wuschig im Kopf, weil ich es nicht auf die Reihe bekomme. DIE SQL-Referenz ist mir da wenig behilflich.
Würde mir bitte wer den Funken der Erleuchtung über die Birne braten? Danke schon mal... .
Irgendwie so:
INSERT INTO tabelle(hash,value1,value2)VALUES('$hash','$wert1' ,'$wert2') WHERE SELECT ...?? NOT IN ... puhhhh, ich hatte das schon alles
oder über eine IF THEN Abfolge
IF NOT EXISTS.... THEN....
Befehl ausführen der jedoch nur denn ausgeführt wird, wenn ein Wert (nicht der Key) noch NICHT vorhanden ist. Es soll kein UPDATE bei schon vorhandenen Einträgen durchgeführt werden.
Der Vollständigkeit halber hier die relevanten Felder der Tabelle:
CREATE TABLE tabelle(
ID AUTO_ .... NOT NULL,
hash varchar(32),
value1 varchar(255),
value2 varchar(255),
....
noch ein paar felder für
timestamp usw.
PRIMARY KEY(ID));
Das zu erreichende Ziel ist leicht erklärt:
hash ist ein md5 schlüssel dem jeweils einträge zugeordnet werden value1 und value2.
Die Tabelle wird aus einer datei heraus aktualisiert die erst mit fopen() und explode() aufbereitet werden muss.
Es liegt letztlich ein Array vor, dessen Werte sind Arrays mit diesen drei strings: hash,value1 und value2.
Es ist nicht anders zu bewerkstelligen, aber die Datei aus der aktualisiert wird muss immer komplett eingelesen werden. Die Reihenfolge in der Einträge geschrieben werden ändert sich ständig. Zudem muss die Datei immer alle Werte aus der DB beinhalten und erhält im Betrieb eben neue Einträge in die Tabelle sollen. Der Ablauf ist absolut unveränderlich.
Ich möchten nicht erst die Daten mit PHP auslesen und sie dann mit einer Schleife oder array_diff ausselektieren.
Es muss doch möglich sein das in das INSERT-Statement mittels WHERE und SUBSELECT einzubauen. Ich bin schon ganz wuschig im Kopf, weil ich es nicht auf die Reihe bekomme. DIE SQL-Referenz ist mir da wenig behilflich.
Würde mir bitte wer den Funken der Erleuchtung über die Birne braten? Danke schon mal... .
Irgendwie so:
INSERT INTO tabelle(hash,value1,value2)VALUES('$hash','$wert1' ,'$wert2') WHERE SELECT ...?? NOT IN ... puhhhh, ich hatte das schon alles
oder über eine IF THEN Abfolge
IF NOT EXISTS.... THEN....
Kommentar