tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
851
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Steusi
    Steusi Steusi ist offline Nasenbär
    Registriert seit
    Sep 2006
    Ort
    MV
    Beiträge
    431
    Hallo Leute,
    das Thema hat zwar einen Bart aber ich habe nicht das Richtige im Forum gefunden.

    Ich möchte einen Datensatz nur hinzufügen, wenn dieser noch nicht vorhanden ist. Dabei kann ich aber nicht eine Spalte als UNIQUE setzen, da erst 2 Spalten zusammen nicht noch einmal vorkommen dürfen.
    Daher bringt mir INSERT ... ON DUPLICATE KEY UPDATE ja nichts oder? Obwohl ich ja auch kein Update möchte.
    Da ich mit PHP arbeite, kann ich es auch einfach in 2 Schritten ausführen, doch schließlich möchte ich meinen Wissensstand ja erweitern.

    Mein erster Versuch mit WHERE NOT IN
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    INSERT INTO USER
                          (user_firstname,
                           user_familyname)
                   SELECT '{$_POST['firstname']}',
                           '{$_POST['familyname']}'
                   WHERE user_firstname NOT IN
                           (SELECT
                           user_firstname
                           FROM USER
                           WHERE user_familyname = '{$_POST['familyname']}')
    Fehler:
    1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE user_firstname NOT IN (SELECT ' at line 6
    Da yaslaw mir mal sagte, das Subquerys innerhalb von WHERE-Bedingungen schnell einmal Fehler aufwerfen, mein 2. Versuch:
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    IF NOT EXISTS
                        (SELECT user_firstname,
                                user_familyname
                        FROM USER
                        WHERE user_familyname = '{$_POST['familyname']}'
                        AND user_firstname = '{$_POST['firstname']}')
                        INSERT INTO USER
                            (user_firstname,
                             user_familyname)
                        VALUES({$_POST['firstname']}',
                              '{$_POST['familyname']}')
    Fehler:
    1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF NOT EXISTS (SELECT user_firstname, ' at line 1
    Hat jemand einen Tipp für mich?
     
    Gruß Steusi

    Sollte dir ein Tipp von mir geholfen haben, freue ich mich auch über eine kleine Bewertung.
    Und wenn ein Problem gelöst ist, markiere deinen Beitrag bitte als erledigt.
    PHP-Code:
    $fehler "dummer Tippfehler";
    echo(
    "Und ist das Programm noch so klein, es passt immer noch ein ".$fehler". rein!"); 

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Setz den Primary-Key über beide Felder. Das sollte gehen.
    Ich denke, es sollte auch mit einem UNIQUE-KEY funktionierne

    Code sql:
    1
    2
    3
    4
    5
    
    ALTER TABLE mytable  
    ADD PRIMARY KEY (feld1, feld2);
    --oder
    ALTER TABLE mytable  
    ADD UNIQUE INDEX myIndex (feld1, feld2)

    Dann kansst du mit INSERT IGNORE arbeiten
    Geändert von Yaslaw (03.11.10 um 11:06 Uhr)
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    Avatar von Steusi
    Steusi Steusi ist offline Nasenbär
    Registriert seit
    Sep 2006
    Ort
    MV
    Beiträge
    431
    Wunderbar, auf jeden Fall eine elegantere Lösung, Danke
     
    Gruß Steusi

    Sollte dir ein Tipp von mir geholfen haben, freue ich mich auch über eine kleine Bewertung.
    Und wenn ein Problem gelöst ist, markiere deinen Beitrag bitte als erledigt.
    PHP-Code:
    $fehler "dummer Tippfehler";
    echo(
    "Und ist das Programm noch so klein, es passt immer noch ein ".$fehler". rein!"); 

Ähnliche Themen

  1. Datensatz löschen, wenn in einer anderen Tabelle nicht vorhanden
    Von port29 im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 15.08.10, 03:16
  2. INSERT aber nur wenn Datensatz noch nicht vorhanden ist.
    Von mafin im Forum Relationale Datenbanksysteme
    Antworten: 6
    Letzter Beitrag: 17.12.08, 10:41
  3. Antworten: 3
    Letzter Beitrag: 22.10.07, 08:31
  4. Hinweis wenn kein Datensatz vorhanden
    Von redwing78 im Forum ASP
    Antworten: 7
    Letzter Beitrag: 10.08.05, 07:52
  5. Wenn eintrag "nicht" vorhanden, neu eintragen! Sonst update
    Von Sebigf im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 10.06.05, 13:10