PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Syntaxproblem: Insert mit Where??


Pukedragon
23.04.2009, 11:41:19
Hallo zusammen.
Ich breuchte mal eure Hilfe.
Ich möchte eine SQL Querry schreiben die mir alle Datensätze anlegt , ausser die wo nichts drin steht. Mit Where scheint das nicht zu gehen.(syntaxfehler)


insert into tblSpracheMovie (idfiMovie,idfiSprache)
where idfiSprach is not null
values
('198', "1"),
('198', "3"),
('198', "")
;

Die dritte Zeile soll in diesem fall ignoriert werde, da in idfiSprache hier nichts drin steht.

Als hintergrund:
Ich mache diese Querry allgemein. Die Daten für idfiSprache kommen aus einem Dynamischen Array und können somit 1, 2 oder 3 Sprachen besitzen. Deshalb soll hier wo nichts drin steht der befehl ignoriert werden.

Wäre super wenn mir jemand helfen kann.

Indyk
23.04.2009, 11:58:41
Hallo Pukedragon,

ich verstehe nicht ganz was du unter ignorieren verstehst? Wenn er es ignoriert bleibt die spalte doch leer, wo ist also der unterschied ob er dort ein leeren string reinschreibt oder es ignoriert?

Pukedragon
23.04.2009, 12:08:29
Hallo.
erst mal danke für die schnelle Antwort.

Das Problem hier ist das so eine Zeile angelegt mit idfiMovie "198" und der in idfiSprache dann automatisch eine "0" (nicht NULL) angelt wird. Dies möchte ich vermeiden in dem die Zeile gar nicht erst erzeugt wird wenn der wert "" ist.

Danke

Indyk
23.04.2009, 12:48:02
Die Informationen werden aber zeilenweise gespeichert und auch wenn du nichts in die Spalte schreibst wird dort eine 0 stehen weil es anscheinend der default wert dieser Zeile ist.

Du müsstest mit deinem Administrationsprogramm (wahrscheinlich PHPMyAdmin) den default wert ändern z.B. auf NULL

worauf möchtest du eigt. hinaus? bzw. was stört dich diese 0 ? Vll. liegt das problem ja wo anders bzw. vielleicht ist ein anderer Lösungsansatz angebracht.

vt1816
23.04.2009, 14:30:44
insert into tblSpracheMovie (idfiMovie,idfiSprache)
where idfiSprach is not null
values
('198', "1"),
('198', "3"),
('198', "")
;




if (idfiSprach = Bedingung)
{
$sql = "insert into tblSpracheMovie (idfiMovie,idfiSprache) values ('198', '1')";
}
else
{
echo "Hinweis";
}

Indyk
23.04.2009, 14:39:30
if (idfiSprach == Bedingung)
{
$sql = "insert into tblSpracheMovie (idfiMovie,idfiSprache) values ('198', '1')";
}
else
{
echo "Hinweis";
}

gern geschehen

Pukedragon
23.04.2009, 15:23:18
Den default Wert kann ich nicht ändern. Sind beides Primärschlüssel.


CREATE TABLE tblSpracheMovie (
idfiMovie INTEGER UNSIGNED NOT NULL,
idfiSprache INTEGER UNSIGNED NOT NULL,
PRIMARY KEY(idfiMovie, idfiSprache),
INDEX tblSprache_has_tblMovie_FKIndex1(idfiSprache),
INDEX tblSprache_has_tblMovie_FKIndex2(idfiMovie)
)
TYPE=InnoDB;

Mein Gedanke war das bei Einträgen wo der Wert 0 ist kein Inhalt vorhanden ist, und somit ist der Eintrag in die DB aus logischer sicht überflüssig.
Aus diesem Grund wollte ich solche nicht zulassen. Änlich wie bei einer Select Abfrage mit Where xy is not null.
Hatte aber im SQL Referenzhandbuch nirgends eine Insert mit Where gefunden.

Ich hallte mal für mich fest das Where befehle in INSERT's nicht funktionieren.

Danke für die Unterstützung.

CLOSE

Pukedragon
23.04.2009, 15:28:02
Habe gerade erst den letzten Beitrag gesehen.
So kann ich das natürlich auch machen.
Hatte mich auf die SQL querry festgefahren.

Danke


CLOSE