[PHP] SELECT GROUP BY und ORDER by id klappt nicht

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Mirak, 10. April 2011 .

Schlagworte:
  1. 10. April 2011
    SELECT GROUP BY und ORDER by id klappt nicht

    Hey Leute

    Ich will mir Daten nach folgendem Schema aus meiner Datenbank auslesen, aber bekomme es nicht hin.

    1. Einträge sollen nach Kategorien geordnet sein
    1.1 Die Kategorie mit der kleinsten 'sorid' soll ganz oben stehen
    2. Auf der Startseite soll mir der Eintrag mit der kleinsten ID einer Gruppe angezeigt werden.

    id cat sorid
    1 buch 1
    2 cd 2
    3 buch 1

    Ausgabe: Erst Buch (weil kleinere sorid), dann CD (weil größere sorid) und bei Buch id 1 (id 2 nicht anzeigen).

    Derzeit werden mir die Gruppen anzeigt, aber nicht immer die kleinste id pro Gruppe.


    Hier mein Versuch:

    PHP:
    $ss_pro  '
        SELECT 
            id, 
            '
    . $procat . '_fam, 
            '
    . $procat . '_img, 
            '
    . $procat . '_sor 
        FROM sin_pro_'
    . $procat .
        GROUP BY '
    . $procat . '_sor ASC 
        ORDER BY id ASC'
    ;
    Danke, Greetz Mirak
     
  2. 10. April 2011
    AW: SELECT GROUP BY und ORDER by id klappt nicht

    Hallo Mirak,

    schön wäre gewesen, wenn Du den SQL-Code gepostet hättest, der wäre leichter zu lesen gewesen. Ausserdem kann ich ja wissen, was in der Variable $procat steht. Nunja.

    Die Funktion MIN() sollte Dir helfen.

    Code:
    SELECT MIN(id), cat, sorid FROM sin_pro GROUP BY sorid
    MySQL :: MySQL 5.1 Referenzhandbuch :: 12.11.1 Funktionen zur Benutzung in GROUP BY-Klauseln

    Hoffe das hilft.
    MaxDev
     
  3. 10. April 2011
    AW: SELECT GROUP BY und ORDER by id klappt nicht

    Nach ein paar Versuchen mit min() klappt es bei mir noch nicht. In der Variablen $procat steht nur dig, ana, tim oder ana (es geht um Uhren).

    Ich arbeite mit phpMyAdmin. Kann ich mir dort solchen "komplexen" auch als SQL Code ausgeben lassen nach dem ich ihn in der Suche eingegeben habe?

    Danke, BW ist raus
     
  4. 10. April 2011
    AW: SELECT GROUP BY und ORDER by id klappt nicht

    Klar sobald die Suche getätigt ist, steht oben im Fenster deine SQL Abfrage.

    Da steht ja iwas von

    Code:
    MySQL lieferte xyz zurück ( die Abfrage dauerte 0.xxxx sek. )
    Dadrunter ist dein SQL Code.
     
  5. 10. April 2011
    AW: SELECT GROUP BY und ORDER by id klappt nicht

    Ich möchte aber mehrere Parameter, wie z.B. die Gruppe in die Suche einbauen. Kann ich mir der phpMyAdmin-Suche nur nicht nach Werten suchen?
     
  6. 10. April 2011
    AW: SELECT GROUP BY und ORDER by id klappt nicht

    Also, ich hab das mal nachgebaut...

    Code:
    CREATE TABLE `sin_pro` (
    `Id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `Name` VARCHAR( 100 ) NOT NULL ,
    `CategoryId` INT NOT NULL
    )
    
    INSERT INTO `sin_pro` (`Id`, `Name`, `CategoryId`) 
    VALUES (NULL, 'ZZZ', '1')
     , (NULL, 'YYY', '2');
     , (NULL, 'XXX', '3');
     , (NULL, 'YYY', '2');
     , (NULL, 'ZZZ', '1');
     , (NULL, 'XXX', '3');
    Das folgende Statement gibt bei mir das richtige Ergebnis zurück:
    Code:
    SELECT MIN(id), Name, CategoryId FROM `sin_pro` GROUP BY CategoryId
    Ergebnis:
    Code:
    Min(Id) Name CategoryId
     1 ZZZ 1
     2 XXX 2
     3 YYY 3
    Verstehe ich nicht ganz was Du machen willst ? Bei mir funzt es...

    Hoffe es hilft
    MaxDev
     
  7. 10. April 2011
    AW: SELECT GROUP BY und ORDER by id klappt nicht

    Was ich machen will:

    Ich habe eine ganzen Haufen Uhren, diese sind in Kategorien A, B, C geordnet. Die jeweiligen IDs dazu haben keine Ordnung. Jetzt will ich pro Kategorie die jeweils kleinste ID ausgeben lassen.

    Ich bin leider zu blöd deinen Code anzuwenden.

    Vielen Dank so weit
     
  8. 10. April 2011
    AW: SELECT GROUP BY und ORDER by id klappt nicht

    Tja, dann könntest Du ein Abbild der Tabelle mit den relevanten Daten schicken, damit wir das Problem genauer nachvollziehen können. Was anderes fällt mir grad auch nicht mehr ein.

    MaxDev
     
  9. 10. April 2011
    AW: SELECT GROUP BY und ORDER by id klappt nicht

    Das klingt nach einer schlechten Umwandlung einer n-zu-m-Beziehung.

    Google nm Beziehung

    Mehr kann ich ohne Infos nichts helfen.
     
  10. 11. April 2011
    AW: SELECT GROUP BY und ORDER by id klappt nicht

    Das ist nen etwas spezielles Problem mit mehreren Lösungen (vgl. http://dev.mysql.com/tech-resources/articles/debunking-group-by-myths.html).

    Ich würd es mit einem Sub-Select machen, Hinweise findest du hier:
    ORDER BY vor GROUP BY Problem - php.de

    Hinweis: einige Datenbanken streiken bei den Abfragen sogar - MySQL liefert die unerwarteten Ergebnisse, die du sicher bei Verwendung von MIN() bekommen hast.
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.