Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Artikel Attribute auf mehrere Artikel kopieren

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von der_Dirk, 22 Februar 2021 um 12:17 Uhr.

  1. der_Dirk

    der_Dirk Benutzer

    Hallo

    ich habe ein riesiges Problem...
    hoffe hier kann jemand helfen...

    Ich möchte die Artikel Attribute von Artikel "A" auf alle Artikel (700) im Shop kopieren (hinzufügen)
    die vorhandenen Artikelattribute sollen aber bestehen bleiben

    Ich habe jetzt schon mehrere Tage gesessen und verschiedene SQL Abfragen/Befehle geschrieben/versucht
    aber immer kommen irgendwelche Fehler... :-(

    wenn es hilft...
    Es handelt sich hier um ein XT-modified-Shop

    ------
    INSERT INTO products_attributes
    SELECT NULL products_attributes_id, products_id, options_id, options_values_id, options_values_price, price_prefix, attributes_model, attributes_stock, options_values_weight, weight_prefix, sortorder, attributes_ean, attributes_vpe_id, attributes_vpe_value
    FROM products_attributes
    CROSS JOIN products
    WHERE products_id = 6 AND products_id BETWEEN 7 AND 700
    ------

    Bitte nur ernsthafte Tipp´s

    Danke
     
  2. akretschmer

    akretschmer Datenbank-Guru

    • hinzufügen, aber bestehende Attribute sollen bestehen bleiben: sind die also schon da? Dann kein INSERT sondern UPDATE
    • (vermutlich) Syntaxfehler zwischen NULL und products_attributes_id
    • "WHERE products_id = 6 AND products_id BETWEEN 7 AND 700" ist NIE true

    ernsthafter wird's nicht ohne Tabellenstruktur und was Du wirklich willst ...
     
  3. der_Dirk

    der_Dirk Benutzer

    Danke schonmal...
    genauer gesagt...
    Es sind bei einigen Artikel (ca. 250) schon Artikelattribute vorhanden,
    und es sollen die neuen aber bei allen Artikel (700) hinzugefügt werden...

    was meinst Du mit der "nicht ohne Tabellenstruktur" .... --> habe mal die Struktur als Bild angehangen..

    "products_id = 6" ist der Artikel der die neuen Attributte hat
    "products_id BETWEEN 7 AND 700" ist der Artikelbereich wo die neuen Attribute hinzugefügt werden sollen...

    habe die Anweisung jetzt Angepasst...

    ---
    UPDATE products_attributes;
    SELECT NULL products_attributes_id, products_id, options_id, options_values_id, options_values_price, price_prefix, attributes_model, attributes_stock, options_values_weight, weight_prefix, sortorder, attributes_ean, attributes_vpe_id, attributes_vpe_value
    FROM products_attributes
    CROSS JOIN products
    WHERE products_id = 6 AND products_id BETWEEN 7 AND 700
    ---

    jetzt kommt als Fehlermeldung

    ---
    SQL-Befehl:
    UPDATE products_attributes

    MySQL meldet: [​IMG]
    #1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei '' in Zeile 1
    ---
     

    Anhänge:

  4. akretschmer

    akretschmer Datenbank-Guru

    die products_id KANN NIEMALS GLEICHZEITIG 6 und zwischen 7 und 700 sein. Mathe, Grundschule...
     
  5. der_Dirk

    der_Dirk Benutzer

    wo liegt denn aber der Fehler... :-(

    aus der products_id 6 sollen die Attribute auf alle products_id zwischen 7 und 700 kopiert werden...
     
  6. der_Dirk

    der_Dirk Benutzer

    diese SQL Anweisung

    --> WHERE products_id = 6 AND products_id BETWEEN 7 AND 700

    ist aus dem Forum vom Shopsystem...
     
  7. akretschmer

    akretschmer Datenbank-Guru

    dann wird's wohl stimmen. Vielleicht ein cooles Feature von MySQL, wer weiß ...
     
  8. der_Dirk

    der_Dirk Benutzer

    aber trozdem bleibt der Fehler

    ---
    SQL-Befehl:
    UPDATE products_attributes

    MySQL meldet: [​IMG]
    #1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei '' in Zeile 1
    ---

    bekomme das nicht "weg"
    weiß nich weiter....
     
  9. der_Dirk

    der_Dirk Benutzer

    @ akretschmer
    wenn Du eine Alternative hast dann bin ich dir mega Dankbar...
     
  10. akretschmer

    akretschmer Datenbank-Guru

    wenn ich Dich richtig verstanden habe hast Du

    Code:
    edb=> select * from prod_attribute order by id;
     id | attribut
    ----+----------
      1 | schwarz
      2 | gelb
      3 | braun
      4 | grün
      5 | rot
      6 | blau
      7 | lila
      8 | weiß
      9 | orange
     21 |
     22 |
     23 | schwarz
     24 | rot
     25 |
     26 |
    (15 rows)
    
    und willst

    Code:
    edb=*> with farbe as (select attribut from prod_attribute where id = 2) update prod_attribute set attribut = farbe.attribut from farbe where id > 10 and prod_attribute.attribut is null;
    UPDATE 4
    edb=*> select * from prod_attribute order by id;
     id | attribut
    ----+----------
      1 | schwarz
      2 | gelb
      3 | braun
      4 | grün
      5 | rot
      6 | blau
      7 | lila
      8 | weiß
      9 | orange
     21 | gelb
     22 | gelb
     23 | schwarz
     24 | rot
     25 | gelb
     26 | gelb
    (15 rows)
    
    edb=*>
    
    aber das sind jetzt nur ganz wilde Vermutungen, und 6 ist zwischen 7 und 700, weiß ja jeder.
     
  11. Dukel

    Dukel Datenbank-Guru

    Unterscheide das UPDATE vom SELECT.
     
  12. der_Dirk

    der_Dirk Benutzer

    na fast

    Artikel 1 = products_id 6
    hat folgende Attribute Blau, Schwarz, Grün

    Artikel 2 - 250 = products_id 7 - 257
    hat folgende Attribute X, XL, XXL
    und die Attribute von Artikel 1 = products_id 6 sollen hinzugefügt werden

    Artikel 11 - 700 = product_id 258 - 806
    und die Attribute von Artikel 1 = products_id 6 sollen kopiert werden


    hoffe es soweit verständlich erklärt zu haben
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden