#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 + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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? + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren