Anleitung Hilfreiche SQL-Befehle

Thema wurde von Petra, 28. April 2015 erstellt.

  1. Manni_HB

    Manni_HB G-WARD 2012/13/14/15

    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    Sehr interessant!!
    Nur es wird nix ausgegeben, egal welches Jahr?!
     
  2. Christian Mueller

    Christian Mueller Beta-Held

    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.698
    Danke erhalten:
    889
    Danke vergeben:
    288
    #62 Christian Mueller, 14. Januar 2016
    Zuletzt bearbeitet: 14. Januar 2016
    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?
     
  3. Christian Mueller

    Christian Mueller Beta-Held

    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.698
    Danke erhalten:
    889
    Danke vergeben:
    288
    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

    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    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

    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.698
    Danke erhalten:
    889
    Danke vergeben:
    288
    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

    Registriert seit:
    26. April 2011
    Beiträge:
    9.098
    Danke erhalten:
    1.540
    Danke vergeben:
    909
    Ort:
    Bremen
    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

    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.698
    Danke erhalten:
    889
    Danke vergeben:
    288
    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

    Registriert seit:
    26. Juni 2015
    Beiträge:
    89
    Danke erhalten:
    14
    Danke vergeben:
    20
    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

    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.698
    Danke erhalten:
    889
    Danke vergeben:
    288

    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

    Registriert seit:
    25. März 2013
    Beiträge:
    821
    Danke erhalten:
    67
    Danke vergeben:
    48
    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

    Registriert seit:
    30. März 2015
    Beiträge:
    226
    Danke erhalten:
    9
    Danke vergeben:
    47
    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

    Registriert seit:
    25. März 2013
    Beiträge:
    821
    Danke erhalten:
    67
    Danke vergeben:
    48
    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

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.692
    Danke vergeben:
    903
    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

    Registriert seit:
    25. März 2013
    Beiträge:
    821
    Danke erhalten:
    67
    Danke vergeben:
    48
    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

    Registriert seit:
    26. April 2011
    Beiträge:
    5.786
    Danke erhalten:
    2.692
    Danke vergeben:
    903
    Das stimmt, bis auf die eckigen Klammern, die weg müssen.
     
  16. Rico

    Rico Erfahrener Benutzer

    Registriert seit:
    25. März 2013
    Beiträge:
    821
    Danke erhalten:
    67
    Danke vergeben:
    48
    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

    Registriert seit:
    20. Februar 2012
    Beiträge:
    8.755
    Danke erhalten:
    1.516
    Danke vergeben:
    1.051
    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

    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.698
    Danke erhalten:
    889
    Danke vergeben:
    288
    Ist da aber richtig eingetragen.
    Darf der Kunde denn die 10 % auch ziehen?
     
  19. Anonymous

    Anonymous G-WARD 2015/2016

    Registriert seit:
    20. Februar 2012
    Beiträge:
    8.755
    Danke erhalten:
    1.516
    Danke vergeben:
    1.051
    #79 Anonymous, 24. Februar 2016
    Zuletzt bearbeitet: 25. Februar 2016
    wo eingetragen? Ich sehe nichts :(

    Klar, wenn man keinen Kundenrabatt eingegeben hat.... :)
     
  20. ek-support

    ek-support Aktives Mitglied

    Registriert seit:
    2. Oktober 2015
    Beiträge:
    42
    Danke erhalten:
    3
    Danke vergeben:
    12
    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?