Anleitung Hilfreiche SQL-Befehle

Thema wurde von Petra, 28. April 2015 erstellt.

  1. Manni_HB

    Manni_HB G-WARD 2012/13/14/15

    Sehr interessant!!
    Nur es wird nix ausgegeben, egal welches Jahr?!
     
  2. Christian Mueller

    Christian Mueller Beta-Held

    Na, dann haste diese Jahr noch nix verkauft ;-)

    In der letzten Zeile trägt man das Jahr ein. Ich hab da jetzt noch keine Sortierung und keine Jahres-übergreifende Statistik raus gemacht weil ich das nicht brauchte...

    Getestet mit GX2.2 .0.0
    Hat es in orders und orders_total großere Änderungen gegeben seitdem?
     
    Zuletzt bearbeitet: 14. Januar 2016
  3. Christian Mueller

    Christian Mueller Beta-Held

    Hast Du evtl. kein orders_total.class="ot_subtotal" weil Du alles Brutto ausgibst im Shop?
     
  4. Manni_HB

    Manni_HB G-WARD 2012/13/14/15

    Ach vergiss mein Geschwätz! "Kaum macht man es richtig, schon funktoniert es!" :mad:

    Sehr schöne Auswertung, vielleicht ahnst Du den Hintergrund meiner Freude!? Weiter so! ;)
     
  5. Christian Mueller

    Christian Mueller Beta-Held

    Ja nee.. schon klar ;-)

    Dann kannst du auch gleich noch orders.payment_class in der abfrage durch orders.shipping_class ersetzen und Du hast eine Statistik über die Versandarten...
     
  6. Manni_HB

    Manni_HB G-WARD 2012/13/14/15

    Der Haken an den Ergebnissen ist, dass (wie in den GM-Statistiken) keine Bestell-Statūs berücksichtigt werden - was ja der ursprüngliche Gedanke für ein sehr schönes Zusatzmodul war! <Werbung ON>
    Beispiel:
    Von den 43 Nachnahme (cod) Bestellungen sind nur 39 "versendet" - und eigentlich bringen nur diese Euros in die Kasse & sind interessant.

    Aber dennoch: Aus den SQL´s kann man was machen!
     
  7. Christian Mueller

    Christian Mueller Beta-Held

    Den orders_status habe ich absichtlich weggelassen, weil der ja nicht fest definiert ist.

    Ausserdem gilt hier wieder der Spruch meines Physik-Profs: "In nichts zeigt sich mathematisches Unverständnis mehr als in zu genauem Rechnen."

    Übrigens bringt mich das mal wieder auf eine Idee:
    Statistik über unbezahlte Bestellungen: Anzahl, Umsatzsumme und Anteil am Gesamtumsatz
     
  8. dirk-skowronek

    dirk-skowronek Erfahrener Benutzer

    Alle Produkte in inaktiven Kategorien ebenfalls auf inaktiv setzen:

    Code:
    UPDATE products SET products_status = 0 WHERE products_id IN (
                                                                    SELECT products_id FROM  products_to_categories WHERE categories_id IN  ( 
                                                                    SELECT 
                                                                    categories_id 
                                                                    FROM 
                                                                    ( 
                                                                    SELECT 
                                                                    @rownum := @rownum+1 AS rownum, 
                                                                    IF(@lastid <> mylist.categories_id, @id := mylist.categories_id, @id) AS pathid, 
                                                                    @lastid := mylist.categories_id AS categories_id, 
                                                                    @id := (SELECT parent_ID FROM categories WHERE categories_id = @id) AS parent_ID 
                                                                    FROM 
                                                                    (SELECT @id := 0, @lastid := 0, @rownum := 0) AS vars, 
                                                                    (SELECT categories_id FROM categories) AS myloop, 
                                                                    (SELECT categories_id FROM categories) AS mylist 
                                                                    ) AS t 
                                                                    WHERE 
                                                                 pathid IN (SELECT categories_id FROM `categories` WHERE `categories_status` = 0)))
    Funktioniert super. Trotzdem empfehle ich vorher ein Datenbank-Backup machen. Sicher ist sicher.

    Quelle: https://www.modified-shop.org/forum/index.php?topic=18128.0
     
  9. Christian Mueller

    Christian Mueller Beta-Held


    Das geht aber auch kürzer:

    Code:
    UPDATE (products INNER JOIN products_to_categories ON products.products_id = products_to_categories.products_id) 
    INNER JOIN categories ON products_to_categories.categories_id = categories.categories_id SET products.products_status = 0
    WHERE categories.categories_status=0;
    
     
  10. Rico

    Rico Erfahrener Benutzer

    Ich müsste bei einigen Produkten in der Beschreibung eine externe Bild-Url durch eine interne ersetzen. Hat jemand einen Code-Schnipsel für mich?
     
  11. tiger955

    tiger955 Erfahrener Benutzer

    AFAIK ist es nur der Bildname, der in der Datenbank gespeichert wird.


    Die URL ist der FTP-Server und steckt im Code.


    Gib mal select * from `products` im SQL-Fenster ein, dann siehst Du im Feld products_image alle Fotos zu den einzelnen Produkten. URL steht dort keine dabei.
    Wenn Du Fotos importierst, werden sie ja auf den FTP-Server importiert und von dort dynamisch in den Webshop verknüpft.


    Michael
     
  12. Rico

    Rico Erfahrener Benutzer

    In den product_descriptions stehen Bild-Urls src="http usw.", die ich gerne durch Bilder auf dem Server src="images/.....gif" ersetzen möchte. es gibt knapp 200 Artikel mit je 3 bis 4 solcher Urls. Mit einem SQL-Befehl, der genau diese Bildadressen tauscht, würde ich enorm an Arbeit sparen.
     
  13. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Hallo,

    wenn du was ersetzen willst, machst du das mittels REPLACE.
    Code:
    UPDATE tabelle SET spalte = REPLACE(spalte, 'ich soll raus', 'ich soll rein')
    Datenbanksicherung vor dem Ausführen nicht vergessen!
     
  14. Rico

    Rico Erfahrener Benutzer

    Code:
    UPDATE [products_description] SET [products_description] = REPLACE([products_description], 'https://mda.owp.de/Shop/img/symbole/buegel.gif', 'images/buegel.gif')
    Wo ist da der Fehler?

    Bestimmt an [ ] Klammern?!
     
  15. Moritz (Gambio)

    Moritz (Gambio) Administrator

    Das stimmt, bis auf die eckigen Klammern, die weg müssen.
     
  16. Rico

    Rico Erfahrener Benutzer

    Okay habs getestet, klappt wunderbar... hatte ne Seite gefunden, wo es mit Klammern war, hatte aber nicht geklappt. Ohne gehts wie erwartet. :D
     
  17. Anonymous

    Anonymous G-WARD 2015/2016

    kann es sein, dass Befehle hier mit HoneyGrid nicht mehr funktionieren?!
    Habe per SQL einem Hersteller einen Rabatt gegeben, wird aber nicht angezeigt.....

    HTML:
    UPDATE products SET products_discount_allowed = 10
    WHERE manufacturers_id=26;
     
  18. Christian Mueller

    Christian Mueller Beta-Held

    Ist da aber richtig eingetragen.
    Darf der Kunde denn die 10 % auch ziehen?
     
  19. Anonymous

    Anonymous G-WARD 2015/2016

    wo eingetragen? Ich sehe nichts :(

    Klar, wenn man keinen Kundenrabatt eingegeben hat.... :)
     
    Zuletzt bearbeitet: 25. Februar 2016
  20. ek-support

    ek-support Aktives Mitglied

    Tabelle: feature_set_to_products erweitern

    Hat jemand eine Idee oder Lösung? Ich habe ein Artikel-Filter angelegt, mit 6 = Herren und 7 = Damen laut Eintrag in der DB, nun möchte ich nicht tausend Artikel einzeln anklicken ;) und die Filter aktivieren.

    zweite Wert ist die products_id


    Code:
    
    INSERT INTO `feature_set_to_products` VALUES ('6','8334'),('7','5262');
    
    SELECT products_id FROM products_item_codes WHERE gender = "Damen"
    SELECT products_id FROM products_item_codes WHERE gender = "Herren"
    
    
    Wie kann man nun sinnvoll die INSERT und SELECT verknüpfen?