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: Doppelte Artikel in Ausgabe von includes/modules/new_products.php

    Martin S.

    • Neu im Forum
    • Beiträge: 4
    Hallo allerseits,

    Wenn man in mehreren Unterkategorien einer Kategorie ein Produkt verlinkt, wird das Produkt bei den neuen Artikeln der Kategorien mehrfach angezeigt (bei 3 Unterkat. also 3mal).

    Ursache ist die SQL in der includes/modules/new_products.php - hier werden die Produkte nicht nach products_id "zusammengefasst".

    Es gibt zwei Lösungsmöglichkeiten:

    Die Auswahl-Felderliste SQL-Abfragen beginnend in Zeile 42 und 57 nach dem Vorbild der "select distinct ..." Abfrage aus Zeile 51 folgende der products_new.php aus der Shopwurzel zu ersetzen.

    und als Zweites eine Schnelllösung die nicht weniger effektiv ist:

    In der includes/modules/new_products.php in Zeile 42 und 57

    das "SELECT * FROM"

    ersetzen durch "SELECT distinct p.* , pd.* FROM"

    -> Fertig

    Zur Erläuterung das Schlüsselwort distinct veranlasst MySQL dazu gleiche Zeilen in der Ausgabe zusammenzufassen oder eher zu unterdrücken. Da die Ausgabe jedoch auch die jeweiligen (unterschiedlichen) Unterkategorien enthält, welche für die Ausgabe nicht benötigt werden, ist es notwendig nur die Felder der Tabelle products (p.*) und der products_description (pd.*) auszuwählen.

    Grüße Martin

    PS: Anbei ein diff zwischen Original und Schnelllösung

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

    h-h-h

    • modified Team
    • Beiträge: 4.562
    Hallo Martin,
    ein GROUP BY p.products_id sollte imho schneller sein als distinct und den selben Erfolg bereiten.

    Vielen Dank fürs Teilen

    h-h-h

    vr

    • modified Team
    • Beiträge: 2.664
    Hallo,

    nee, das kann man so nicht sagen. Es kommt drauf an, welche Indizes es gibt und ob sortiert wird, ob es where Bedingungen gibt, wie die aussehen. Es kann auch gleichwertig sein, es kann auch andersrum sein. Vergleicht mal

    Code: SQL  [Auswählen]
    EXPLAIN SELECT customers_id, customers_firstname, customers_lastname
    FROM customers
    WHERE customers_firstname = 'Paul'
    GROUP BY 1, 2, 3
     

    Code: SQL  [Auswählen]
    EXPLAIN SELECT DISTINCT customers_id, customers_firstname, customers_lastname
    FROM customers
    WHERE customers_firstname = 'Paul'
     

    Das statement mit group by macht in diesem Fall zusätzlich ein filesort, das ist in jedem Fall schlechter.

    Verständlicher wäre hier sowieso distinct. Und statt select * nur die Felder anzufordern, die gebraucht werden, ist besser.

    Grüße, Volker

    Martin S.

    • Neu im Forum
    • Beiträge: 4
    Hi allerseits nochmal,

    Mir soll der Aufruf egal sein, ich habe mich eh schon entschieden gehabt ;-)

    Aber es wäre schön, wenn der Fix den Weg in SP1d finden würde.

    Es macht ja keinen wirklichen Sinn, das die neuen Produkte der Unterkategorien sooft wie die in den Kategorien verlinkt sind, erscheinen . Zumal die ja auch immer nebeneinander angezeigt werden, da nach Modifications-Datum/Zeit sortiert wird.

    Grüße Martin
    Shop Hosting
    2 Antworten
    1833 Aufrufe
    01. April 2016, 12:44:59 von Bonsai
    10 Antworten
    2421 Aufrufe
    22. November 2017, 13:30:58 von web28