MYSQL, Problem mit INSERT

[code=sql] [/code] ist hier ebenso möglich.

Nach "highlight=" lässt sich der Name der Sprache angeben.

mfg Maik
 
Eine Frage hab ich jetzt noch, wie kann man verhindern daß ein leerer Datensatz angehängt wird (ich denke da z.B. an meinen Fehler).

Falls du mit "leer" meinst, dass "t_update.hersteller_name" NULL ist, musst du das eben in der WHERE Bedingung noch ausschließen. Vielleicht hilft es auch, bei LEFT JOIN das Wort LEFT zu entfernen. Hier zu der Auszug aus der Dokumentation:
Ist für die rechte Tabelle im ON- oder USING-Teil eines LEFT JOIN kein passender Datensatz vorhanden, dann wird für die rechte Tabelle ein Datensatz verwendet, bei dem alle Spalten auf NULL gesetzt sind.
http://dev.mysql.com/doc/refman/5.1/de/join.html

Ohne left:
SQL:
INSERT INTO hersteller (shop_iD, Hersteller_ID, ADDR_ID, HERSTELLER_NAME, HERSTELLER_IMAGE, LAST_CHANGE, SHOP_DATE_ADDED, SHOP_DATE_CHANGE, CHANGE_FLAG, DEL_FLAG)
SELECT  1, NULL, -1, t_update.hersteller_name, NULL, NOW(), NULL, NULL, 'Y', 'N' FROM t_update
JOIN hersteller ON t_update.HERSTELLER_NAME = hersteller.HERSTELLER_NAME
WHERE hersteller.HERSTELLER_ID IS NULL

Das gleiche nochmal, aber mit anderer Join-Syntax (finde ich in dem Fall angenehmer zu lesen)
SQL:
INSERT INTO hersteller (shop_iD, Hersteller_ID, ADDR_ID, HERSTELLER_NAME, HERSTELLER_IMAGE, LAST_CHANGE, SHOP_DATE_ADDED, SHOP_DATE_CHANGE, CHANGE_FLAG, DEL_FLAG)
SELECT  1, NULL, -1, t_update.hersteller_name, NULL, NOW(), NULL, NULL, 'Y', 'N' FROM t_update, hersteller
WHERE t_update.HERSTELLER_NAME = hersteller.HERSTELLER_NAME AND hersteller.HERSTELLER_ID IS NULL
 

Neue Beiträge

Zurück