Werbung / Banner buchen
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Hersteller-Import per MySQL - Problem mit doppelten Datensätzen

    Kello

    • Mitglied
    • Beiträge: 143
    • Geschlecht:
    Hoppla, falschen Unterforum!  :doh:  Kann's jetzt nicht mehr ändern! Kann mir das ein Admin verschieben? Danke!

    Hallo zusammen!

    Ich bastle grad an einigen SQL-Befehlen rum.
    Die Kategorien in die DB hab ich scho geschafft und auch der Artikelimport funktioniert.
    Leider geht das nur, wenn jeder Artikel einen anderen Hersteller (bei mir Designer) hat.  :datz:

    Der SQL-Befehl schaut so aus:

    Code: SQL  [Auswählen]
    INSERT INTO manufacturers
            (manufacturers_name)
    VALUES
            ('InpDesigner')
    ;
    Beim ersten mal geht das, beim zweiten Artikel mit dem selben Hersteller/Designer gibt's ne Fehlermdlung (nona).

    Im Netz bin ich auf REPLACE gestoßen - das geht zwar insoweit, als daß er weder Fehler ausgibt noch den Datensatz ein zweites mal anlegt, dafür ändert er aber die ID!  `:/

    Scheinbar gibt's in MySQL keine IF EXIST Abfrage (zumindest hätte ich keine gefunden). :(

    Hat jemand von Euch eine Idee, wie ich es anstelle, den Hersteller/Designer nur dann anzulegen, wenn er noch nicht existiert?

    Oder muß ich m ir dazu wieder eine eigene Hersteller-Tabelle (xls) anlegen?  :oh-no:
    Diesen Umweg mußte ich schon bei den Kategorien gehen. Das möchte ich mir beim Rest sparen (wenn's denn irgend geht).

    Beste Grüße
    Kello



    Linkback: https://www.modified-shop.org/forum/index.php?topic=4547.0

    DokuMan

    • modified Team
    • Beiträge: 6.669
    • Geschlecht:
    Mit deinem SQL-Codeschnipsel legst du einen neuen Hersteller an.
    Führst du den Code anschließend erneut aus, bekommst du deinen Fehler, da es den Hersteller mit diesem Namen schon gibt und er den mit INSERT nicht nochmal in die DB einfügen kann.

    Bei MYSQL heißt der Befehl "IF EXISTS"

    Kello

    • Mitglied
    • Beiträge: 143
    • Geschlecht:
    Mit deinem SQL-Codeschnipsel legst du einen neuen Hersteller an.
    Führst du den Code anschließend erneut aus, bekommst du deinen Fehler, da es den Hersteller mit diesem Namen schon gibt und er den mit INSERT nicht nochmal in die DB einfügen kann.
    Ja, ich weiß - desahlb such ich ja einen anderen Weg! ;)

    Bei MYSQL heißt der Befehl "IF EXISTS"

    Aha, dann gibt's das also doch!
    Ich hatte gelesen, daß es das nur bei MSSQL gibt, nicht aber bei MySQL!

    Danke für Deine Antwort - werd ich gleich mal weiter probieren!

    Beste Grüße
    Kello

    Kello

    • Mitglied
    • Beiträge: 143
    • Geschlecht:
    Hm, jetzt hab ich in drei verschiedenen Foren gelsen, daß das "IF EXISTS" Nur für das anlegen oder löschen von Tabellen gut ist.

    Zumindest finde ich nirgendwo, wie ich vor dem INSERT abfragen kann, ob der Datensatz schin existiert.

    Es funktioniert werde so...

    Code: SQL  [Auswählen]
    IF EXISTS
            (SELECT * FROM manufacturers WHERE manufacturers_name = 'InpDesigner')
    THEN
            // nix zu tun hier
    ELSE
            INSERT INTO manufacturers
                    (manufacturers_name)
            VALUES
                    ('InpDesigner')
    END IF;
    noch so...

    Code: SQL  [Auswählen]
    IF
            (SELECT manufacturers_id FROM manufacturers WHERE manufacturers_name = 'InpDesigner')> 0
    THEN
            // nix zu tun hier
    ELSE
            INSERT INTO manufacturers
                    (manufacturers_name)
            VALUES
                    ('InpDesigner')
    END IF;
    Irgendwer eine Idee?

    Ich such natürlich weiter - sollte ich was finden, schreib ich es hier dazu!

    Beste Grüße
    Kello

    6 Antworten
    3884 Aufrufe
    13. März 2012, 08:46:04 von shawnee
    2 Antworten
    2660 Aufrufe
    05. Juni 2012, 14:27:16 von Gradler
    7 Antworten
    10408 Aufrufe
    25. August 2009, 14:02:16 von Tomcraft
               
    anything