Ergebnis 1 bis 5 von 5

Thema: Frontend Sortierung - einfaches SQL

  1. #1
    Contao-Nutzer
    Registriert seit
    29.12.2011.
    Beiträge
    109

    Standard Frontend Sortierung - einfaches SQL

    Hallo,

    folgender Aufbau:

    MM1 unternehmen:

    id | name
    1 | unter a
    2 | unter b
    3 | unter c


    MM2 produkte:

    id | pid | name
    1 | 1 | prod a1
    2 | 1 | prod a2
    3 | 1 | prod a3
    4 | 2 | prod b1
    5 | 2 | prod b2
    6 | 2 | prod b3
    7 | 3 | prod c1
    8 | 3 | prod c2
    9 | 3 | prod c3



    Ich lasse die Liste sortiert und somit gruppiert nach unternehmen (pid) ausgeben:

    SELECT id FROM mm_produkte ORDER BY pid;


    Nun wird die Liste immer in folgender Reihenfolge ausgegeben.

    Produkte von Unternehmen a --> Produkte von Unternehmen b --> Produkte von Unternehmen c

    prod a1
    prod a2
    prod a3
    prod b1
    prod b2
    prod b3
    prod c1
    prod c2
    prod c3



    Wie kann ich die Liste so ausgeben lassen, dass die Produkt-Gruppen unterschiedlich ausgegeben werden?

    Produkte von Unternehmen b --> Produkte von Unternehmen a --> Produkte von Unternehmen c

    prod b1
    prod b2
    prod b3
    prod a1
    prod a2
    prod a3
    prod c1
    prod c2
    prod c3


    Beim nächsten Seiten- Aufruf:

    Produkte von Unternehmen c --> Produkte von Unternehmen b --> Produkte von Unternehmen a

    prod c1
    prod c2
    prod c3
    prod b1
    prod b2
    prod b3
    prod a1
    prod a2
    prod a3

    usw.


    Jemand eine Idee?
    Gruß Bastian
    Geändert von bastlwastl (30.03.2017 um 09:21 Uhr)

  2. #2
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.718
    User beschenken
    Wunschliste

    Standard

    typisches Besipiel für eine Sortierung, die nicht Numerisch oder Alphabetisch ist, ist die Sortierung nach Wochentag (Mo, Di, ...) - was mir bei Dir noch unklar ist, ob die Reihenfolge "random" sein soll

  3. #3
    Contao-Nutzer
    Registriert seit
    29.12.2011.
    Beiträge
    109

    Standard

    Ja, die Reihenfolge soll "random" sein.

    In erster Linie geht es darum, dass die Produkte eines Unternehmens zusammen bleiben.
    Es sollen aber keine Produkte eines Unternehmens dauerhaft an erster Stelle der Liste ausgegeben werden.

    Ein Lösungsweg wäre:

    Ih nutze die Spalte sorting von mm_unternehmen und lasse stündlich per Cronjob eine random Zahl eintragen.
    So wäre eine zufällige Sortierung möglich.


    PHP-Code:
    SELECT idpid
    FROM mm_produkte 
    AS p
    ORDER BY
    (
      
    SELECT sorting
      FROM mm_unternehmen
      WHERE id 
    p.pid  


    Ist das aber nicht zu umständlich.

  4. #4
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.718
    User beschenken
    Wunschliste

    Standard

    da MySQL auch random kennt, gibt es sicher eine Lösung, für die man nur "Eig. SQL" benötigt

  5. #5
    Contao-Nutzer
    Registriert seit
    29.12.2011.
    Beiträge
    109

    Standard

    Hier die Lösung:

    PHP-Code:
    SELECT p.id
    FROM 
    (SELECT DISTINCT id rand() r FROM mm_unternehmenr
    LEFT JOIN mm_produkte p ON p
    .pid r.id
    ORDER BY r
    .r
    Gruß Bastian

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •