Anleitung Hilfreiche SQL-Befehle

Thema wurde von Petra, 28. April 2015 erstellt.

  1. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.831
    Danke erhalten:
    1.122
    Danke vergeben:
    947
    Ich denke er meint, dass der da den Hersteller drin stehen haben möchte, nicht das Wort "Hersteller" :)
     
  2. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    1. September 2012
    Beiträge:
    2.443
    Danke erhalten:
    421
    Danke vergeben:
    158
    Genau!

    Aber das werde ich mit dem concat schon hinbekommen indem man das Feld des Herstellers mit dem Namen verknüpft.

    Danke!
     
  3. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.831
    Danke erhalten:
    1.122
    Danke vergeben:
    947
    Code:
    update products_description 
    inner join products on products.products_id = products_description.products_id 
    inner join manufacturers on products.manfufacturers_id = manufacturers.manufacturers_id 
    set gm_alt_text = CONCAT(manufacturers_name, ': ', products_name);
    So vielleicht. Vorher Sicherung machen.
     
  4. Christian Mueller

    Christian Mueller Beta-Held

    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.693
    Danke erhalten:
    885
    Danke vergeben:
    288
    Offene Warenkörbe:

    Code:
    SELECT cb.customers_basket_date_added as Datum, c.customers_cid as Kundennr, c.customers_firstname as Vorname, c.customers_lastname as Name, p.products_model as Artnr, pd.products_name as Bezeichnung, cb.customers_basket_quantity as Anzahl
    FROM products as p INNER JOIN ((customers_basket as cb INNER JOIN customers as c ON cb.customers_id = c.customers_id) INNER JOIN products_description as pd ON cb.products_id = pd.products_id) ON p.products_id = cb.products_id
    WHERE pd.language_id=2
    ORDER BY cb.customers_basket_date_added DESC
    
     
  5. Whitecaps Products

    Whitecaps Products Erfahrener Benutzer

    Registriert seit:
    7. März 2015
    Beiträge:
    104
    Danke erhalten:
    0
    Danke vergeben:
    37
    #325 Whitecaps Products, 25. Januar 2019
    Zuletzt bearbeitet: 25. Januar 2019
    Hallo,

    kann mir vielleicht jemand von Euch helfen? Ich komme bei der Erstellung eines SQL-Befehles nicht weiter, welcher den Teaser-Slider für einen bestimmten Hersteller in allen seinen Produkten aktiviert. Ich finde die Tables dazu irgendwie nicht und kann auch keinen Zusammenhang herleiten.

    Ich wollte so vorgehen:

    UPDATE slider_assignments SET slider_id = 4 WHERE entity_type = 'product' AND entity_id>0

    Denke aber das klappt nicht bzw. nur für Produkte, welche bereits einen Teaser-Slider aktiviert haben.

    Eventuell muss ich mit der WHERE und FROM Klausel arbeiten um hier die Daten aus den Unterschiedlichen Tabellen zusammenzubekommen.

    Würde ich freuen, wenn Ihr mir hierbei helfen könntet. Das würde uns viel Arbeit ersparen.
     
  6. Christian Mueller

    Christian Mueller Beta-Held

    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.693
    Danke erhalten:
    885
    Danke vergeben:
    288

    Das installiert den Slider mit der ID 4 in allen Artikeln von Hersteller mit der ID 8:

    Code:
    INSERT INTO slider_assignments ( entity_id, slider_id, entity_type )
    SELECT products.products_id, "4" AS slider_id, "product" AS entity_type
    FROM products
    WHERE products.manufacturers_id=8;
    
     
  7. Whitecaps Products

    Whitecaps Products Erfahrener Benutzer

    Registriert seit:
    7. März 2015
    Beiträge:
    104
    Danke erhalten:
    0
    Danke vergeben:
    37
    Hey Christian,

    gigantisch. Vielen Dank!! Ich werde es gleich mal ausprobieren im Testshop.

    Melde mich dann.:)
     
  8. Whitecaps Products

    Whitecaps Products Erfahrener Benutzer

    Registriert seit:
    7. März 2015
    Beiträge:
    104
    Danke erhalten:
    0
    Danke vergeben:
    37
    Hi,

    ich habe nun Deinen Befehl verwendet um im Testshop einen Versuch zu starten. Das klappte auch soweit einwandfrei.:) Danach habe ich den Befehl in unserem Live-Shop übernommen. Dazu habe ich die SQL-Funktion des Shops verwendet. Das klappte ebenfalls einwandfrei.

    Nun wolle ich weitere Produkte mit neuen Slidern versehen, aber dabei kam es zu Problemen und der Code wird nicht mehr von der Datenbank ausgeführt. Ich versuchte es dann mit einem anderen Hersteller und dann klappte es einmal wieder ohne Error. Warum kann ich nicht verstehen.

    Dann habe ich es mehrmals mit unterschiedlichen Herstellern und neuen Slidern versucht, jedoch ohne Erfolg. Ich hänge die Fehlermeldungen der SQL mal an. Was ich mir vorstellen kann ist, dass es mit diesem Befehl hierbei komplett neu eingetragen wird und eventuell bereits vorhandenen Einstellungen des Sliders bei Produkten nicht überschrieben werden können. Macht die UPDATE Funktion vielleicht Sinn?

    Danke noch mal für Deine Hilfe.

    Bildschirmfoto 2019-01-26 um 21.58.39.png Bildschirmfoto 2019-01-26 um 21.58.22.png
     
  9. Whitecaps Products

    Whitecaps Products Erfahrener Benutzer

    Registriert seit:
    7. März 2015
    Beiträge:
    104
    Danke erhalten:
    0
    Danke vergeben:
    37
    Edit:

    Ich habe nun mit dem Befehl:

    DELETE FROM `slider_assignments`
    WHERE entity_type=product

    Die Zuordnung aller Slider zu den Produkten gelöscht. Damit lassen sich die Slider wieder völlig neu setzen. Das bestätigt meine Vermutung, dass ein Überschreiben bereits bestehender Zuordnungen nicht möglich ist.

    Kannst Du den Code eventuell modifizieren, damit ich diesen auch zum Update für bestehende Hersteller nutzen kann?

    LG
     
  10. Christian Mueller

    Christian Mueller Beta-Held

    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.693
    Danke erhalten:
    885
    Danke vergeben:
    288
    Du hast wahrscheinlich schon Artikel mit Slidern von dem jeweiligen Hersteller in der Tabelle. Die müssten erst gelöscht werden, bevor Du sie neu erstellen kannst.
     
  11. Christian Mueller

    Christian Mueller Beta-Held

    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.693
    Danke erhalten:
    885
    Danke vergeben:
    288
    Richtig. Pro Artikel darf es nur einen Slider geben.
    Damit löscht du gezielt alle Slider in den Produkten eines Herstellers:

    Code:
    DELETE slider_assignments.*
    FROM products INNER JOIN slider_assignments ON products.products_id = slider_assignments.entity_id
    WHERE products.manufacturers_id=8;
    
     
  12. Whitecaps Products

    Whitecaps Products Erfahrener Benutzer

    Registriert seit:
    7. März 2015
    Beiträge:
    104
    Danke erhalten:
    0
    Danke vergeben:
    37
    Super! Nun funktioniert es.:) Damit kann ich mir eine Menge herleiten.

    Vielen Dank für Deine qualifizierte Hilfe.

    LG

    Manuel
     
  13. Whitecaps Products

    Whitecaps Products Erfahrener Benutzer

    Registriert seit:
    7. März 2015
    Beiträge:
    104
    Danke erhalten:
    0
    Danke vergeben:
    37
    Hi Leute, ich brauche erneut Eure Hilfe.

    Mit welchem Befehl kann ich für alle Artikel gleichzeitig die Einstellung „Kombinationslieferzeit" in den Einstellungen der Eigenschaften von Artikeln in SQL umschalten/ anschalten?

    Vielen Dank Euch
     

    Anhänge:

  14. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Ungetestet, also bitte erst im Testshop und auf jeden Fall eine Datenbank-Sicherung vorher machen.
    Code:
    UPDATE `products` SET `use_properties_combis_shipping_time`= 1;
     
  15. Whitecaps Products

    Whitecaps Products Erfahrener Benutzer

    Registriert seit:
    7. März 2015
    Beiträge:
    104
    Danke erhalten:
    0
    Danke vergeben:
    37
    Hey Barbara,

    das hat wunderbar geklappt.

    Vielen Dank!!
     
  16. juergenhuber

    juergenhuber Mitglied

    Registriert seit:
    15. Februar 2013
    Beiträge:
    11
    Danke erhalten:
    0
    Hallo,
    habe hier den Befehl gefunden der alle Preise erhöht.

    Preiserhöhung global für alle Artikel - bezieht sich auf Nettopreis
    Der Befehl erhöht alle Preise um 5%, kann jedoch abgeändert werden, indem die Zahl hinter *1. geändert wird.
    PHP:
    update products set products_price=products_price*1.05;


    Bezieht sich die Preiserhöhung auch auf die hinterlegten Artikelattribute oder nur auf den Artikel Preis?
     
  17. tiger955

    tiger955 Erfahrener Benutzer

    Registriert seit:
    30. März 2015
    Beiträge:
    226
    Danke erhalten:
    9
    Danke vergeben:
    47
    Nur auf den Artikelpreis. Du veränderst nur Werte in der Tabelle products.

    Aber kannst es ja leicht testen:
    Update products...WHERE PRODUCTS_ID=1

    ändert nur products_id 1.
     
  18. juergenhuber

    juergenhuber Mitglied

    Registriert seit:
    15. Februar 2013
    Beiträge:
    11
    Danke erhalten:
    0
    vielen dank.
    gibt es auch eine möglichkeit um die artikelattribut preise zu erhöhen?
     
  19. Christian Mueller

    Christian Mueller Beta-Held

    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.693
    Danke erhalten:
    885
    Danke vergeben:
    288
    Geht genauso:
    update products_attributes set options_values_price=options_values_price*1.05;
     
  20. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Frage an die SQL-Profis
    In einem Shop wird für jede NL-Mail auch eine Kopie an den Betreiber gesendet.
    Die Kopien werden auch in der Tabelle "emails" gespeichert, mit einem
    [COPY] vor dem ursprünglichen Empfängernamen (in der Spalte "subject")
    Da das die Tabelle mächtig aufbläht suche ich nach einer Möglichkeit um die Kopien zu löschen.

    Hat jemand einen SQL-Befehl, der das kann?