Marko: Knifflige MySQL Query

Hi Forum,

ein etwas kniffliges MySQL Problem: Ich habe 2 Tabellen, zu jedem Datensatz in Tabelle 1 existieren 4 Datensätze in Tabelle 2. Diese Datensätze haben bestimmte Schlüssel, die sich aus 4 Bezeichnern, und der ID aus dem zugehörigen Datensatz aus Tabelle 1 zusammensetzen. Also wenn die Bezeichner "nord, sued, ost, west" sind gibt es z.B. für den Datensatz 4 aus Tabelle 1 in Tabelle 2 die Datensätze: "4nord, 4sued, 4ost, 4 west".

Was ich suche: Eine einzige SQL-Abfrage, mit der ich die Datensätze in Tabelle 2 erzeugen, aber nur dann, wenn sie nicht schon existieren.

Alternativ, falls das nicht geht:

Ich könnte in meinem Script alle schlüssel generieren, und dann abfragenwelche Schlüssel in Tabelle 2 nicht vorkommen, aber das gäbe wohl eine riesenquery, weil ich alle Schlüssel mitgeben muss. Wie wäre in diesem Fall die Syntax.

vielen Dank schonmal, und ich hoffe das Problem war verständlich formuliert, stehe mit SQL leider immer noch etwss auf Kriegsfuß.

Gruss

Marko

  1. Moin Markus,

    Imho löst dein Problem folgendes:
    (1.) du setzt den Schlüssel aus Tabelle 2 auf PRIMARY oder UNIQUE (je nachdem, was in deiner struktur besser passt)
    (2.) Bei deinem INSERT-Statement fügst du ein IGNORE hinzu, so dass Versuche, doppelte Datensätze einzufügen, ignoriert werden.

    Siehe http://de.mysql.com/documentation/mysql/bychapter/manual.de_Reference.html#HANDLER

    1. Hallo Vimes,

      die Idee klingt gut, wieder so was, was ich noch nicht kannte IGNORE. Aber gibt es einne Weg das jetzt alles in einem Statement hinzubekommen (Pseudocode):

      SELECT ID FROM tabelle1 FOR EVERY ID INSERT INTO TABELLE2...4 neue Datensätze ?

      Danke und Gruss

      Marko