PHP Ergebnisse einer SQL-Abfrage nach Rang sortieren?

Dsimon24

Lieutenant
Registriert
Aug. 2016
Beiträge
595
Hallo zusammen,

ich habe mehrere SQL-Abfragen um die jeweiligen Daten-
sätze je Region (bspw Nord, Ost, Süd, West) zu erhalten.

Somit bspw. folgendes Ergebnis:

Datensätze mit region='Nord' 167
Datensätze mit region='Ost' 187
Datensätze mit region='Süd' 127
Datensätze mit region='West' 147

Jetzt möchte ich eine Tabelle in folgender Form erstellen:

RandRegionDatensätze
Rang 1Ost187
Rang 2Nord167
Rang 3West147
Rang 4Süd127

Wie kann ich das am besten realisieren? Leider stehe ich
bei dieser Aufgabe auf dem Schlauch und komme zu
keinem Ansatz. - Vielleicht habt ihr eine Idee?

VG
 
Nun, das ist eigentlich eine sehr einfache Aufgabe.
Du hast ja bereits die Zuordnung Nord=167, Ost=187 etc.
Bei deiner SQL-Abfrage sortierst Du absteigend nach Anzahl Datensätze.
Anschließend kommt eine for- bzw. foreach-Schleife, welche das Ganze iteriert (durchläuft) und Dir die Tabelle erstellt.

Tante Edith: Ist das eigentlich eine Schulaufgabe? Ich habe das erst mal ohne konkretes Bsp. gemacht, da es mir so scheint, als würdest Du an einer Schulaufgabe sitzen. :-)
 
Zuletzt bearbeitet: (Gedanke)
Leider bringst Du Abfragen/ Tabellen irgendwie so durcheinander, dass ich z.B. keinen Plan habe was Du willst.
Um die entsprechende Tabelle zu erstellen:

Code:
CREATE TABLE `tabelle1` (
  `Rang` varchar(100)  NOT NULL,
`Region` varchar(100) NOT NULL,
`Datensätze`int(4) NOT NULL);


INSERT INTO `tabelle1` (`Rang`, `Region`,  `Datensätze`) VALUES
('Rang 1', 'Ost', 187),
('Rang 2', 'Nord', 167),
('Rang 3', 'West', 147),
('Rang 4', 'Süd', 127);

...aber wie gesagt...ich vermute Du hast Deine Frage einfach nur doof gestellt :p

Falls die Frage lautet, wie Du Abfrageergebnisse sortieren kannst ->in der SELECT Anweisung einfach ORDER BY nutzen.
Oder halt bitte die Frage noch einmal fachlich korrekt formulieren.
 
  • Gefällt mir
Reaktionen: Ichthys
SQL: Stichwort "ORDER BY"
Und dann in einer schleife durch die ergebnisse gehen und die Tabelle bauen?
 
  • Gefällt mir
Reaktionen: Ichthys
Ichthys schrieb:
Ist das eigentlich eine Schulaufgabe?
Jetzt wo Du es sagst...fühle ich mich schlecht, als ob ich irgendwem der im Unterricht gepoft hat seine Hausaufgabe gemacht habe :p
 
  • Gefällt mir
Reaktionen: Ichthys
xdave78 schrieb:
Jetzt wo Du es sagst...fühle ich mich schlecht, als ob ich irgendwem der im Unterricht gepoft hat seine Hausaufgabe gemacht habe :p
Deshalb meine Nachfrage. :daumen:
 
Hm? So mißverständlich ist doch die Frage gar nicht? Also ich unterstelle natürlich mal, daß der TO das gefragt hat, was er wissen wollte, und nicht irgendwelche Begriffe um sich geworfen hat.

-- RANK ungleich Order by.
-- Die "Zahlen" im OP sind nicht die IDs, sondern -- wenn es um Ranking geht -- wahrscheinlich aufbereitete Anzahlen: Von 100 Einträgen sind a % Ost, b% West, c% Süd und d% Nord, mit variablen a bis d.

==> Für sowas braucht man Ranking-Funktionen. Die gibts als Aggregate und als Windowfunktionen, ich vermute mal anhand der Aufgabenstellung, daß ein Agreggat reicht.

Für sowas wird das verwendete Datenbanksystem interessant. Ich vermute ja mal das allgegenwärtige MySQL, aber wissen tu ich das natürlich nicht.

Die "normale" Herangehensweise ist da, wenn man eine Tabelle hat zB

id Stadt Region
1 abc Ost
2 cde West
3 blub Ost
4 Quak Süd


daß man da sinngemäß mit

SQL:
SELECT region, dense_rank (region) rank_region
FROM tabelle
GROUP BY region
ORDER BY decode(region, 0, Nord, 1, Süd, 2, West, 3, Ost, region)
herangeht.

Wichtig, der Code oben ist fast garantiert nicht ausführbar. Unbedingt erstmal in der Doku des verwendeten DBMS nach Syntaxfragen schauen. Da gibt es meistens auch Beispiele.

Und bedenken, daß Ranking nicht dasselbe wie Ranking ist. Da gibt es Unterschiede, allen voran die Frage:
wenn ich 40x Nord hab und 40x Süd, und 50x West und 25x Ost, hab ich dann
1 West, 2 Nord, 2 Süd, 4 Ost; ODER
1 West, 2 Nord, 2 Süd, 3 Ost; ODER
1 West, 2 Nord, 3 Süd, 4 Ost; ODER
1 West, 2 Süd, 3 Nord, 4 Ost?

Die zu verwendende Rankingfunktion ergibt sich normalerweise aus dem Problem. Im Sport gibts keinen 3. Platz, wenn es zwei zweite gab, aber das ist nicht überall so.
 
Zuletzt bearbeitet von einem Moderator:
  • Gefällt mir
Reaktionen: abcddcba
Zurück
Oben