Zweifaches ORDER BY?
Dieter
- datenbank
Hallo,
ich würde gerne eine Tagcloud erstellen wie es bei del.icio.us & Co üblich ist. Dabei habe ich ein Problem: Ich möchte die 100 Begriffe abfragen, die am meisten benutzt werden - aber ich möchte nicht danach ordnen wie oft sie benutzt wurden, sondern nach Alphabet!
Bisher sieht meine Query wie folgt aus:
SELECT tag,id FROM Ttag ORDER BY (SELECT COUNT(*) FROM Ttagged WHERE Ttagged.tag = Ttag.id) DESC LIMIT 100
Diese Abfrage realisiert, dass die 100 meistbenutzten Begriffe abgerufen werden aber leider nicht das alphabetische Sortieren...
Ich würde mich über Hilfe freuen,
mfg, Dieter!
Ich kenn mich jetzt nicht 100% aus aber kannst du das nicht evtl. verschachteln das er es erst nach hundert und dann diese hundert nach alphabet ordnet. Klingt für mich jetzt logisch das du ORDER BY (... ORDER By(...) ) machst
Hi pad,
Ich kenn mich jetzt nicht 100% aus aber kannst du das nicht evtl. verschachteln das er es erst nach hundert und dann diese hundert nach alphabet ordnet. Klingt für mich jetzt logisch das du ORDER BY (... ORDER By(...) ) machst
schreibst du in jede Posting-Antwort ein, "Ich kenn mich jetzt nicht 100% aus aber ..." ? :)
Verschachteln geht nicht direkt beim Order, aber wie wäre es mit einer in sich verschatelten Select-Query?
SELECT * FROM (SELECT ... ) table ORDER BY table ASC
Alekz
Es war ne Vemutung aber das mit dem Verschachteln war doch schon mal nicht schlecht.
Ich muss mich korregieren, wenn dann so:
SELECT a.tags FROM (SELECT tags FROM ... ORDER BY xyz) a ORDER BY a.tags ASC
Klappt das?
SELECT
tag,
id
FROM
Ttag
ORDER BY
(
SELECT
COUNT(*)
FROM
Ttagged
WHERE
(Ttagged.tag = Ttag.id)
)
DESC
LIMIT
100
Diese Abfrage realisiert, dass die 100 meistbenutzten Begriffe abgerufen werden aber leider nicht das alphabetische Sortieren...
Versuch mal:
SELECT
tag,
id -- hier eventuell irgendwo mit SUM(*) kommen
FROM
Ttag
JOIN
Ttagged ON (Ttagged.tag = Ttag.id)
GROUP BY
Ttag.id -- ist jetzt nur ein Beispiel für die vollqualifizierte Schreibweise des Datenfelds
LIMIT
0,
100
Immer auch mal hier schauen:
http://dev.mysql.com/doc/refman/5.1/de/index.html
http://dev.mysql.com/doc/refman/5.1/de/select.html
yo,
Diese Abfrage realisiert, dass die 100 meistbenutzten Begriffe abgerufen werden aber leider nicht das alphabetische Sortieren...
die frage ist, nach welcher spalte du den alphabetisch sortieren willst. kommt die spalte nämlich in der tabelle Ttag vor, kannst su einfach mit im order by mit angeben.
SELECT tag,id
FROM Ttag
ORDER BY (SELECT COUNT(*) FROM Ttagged WHERE Ttagged.tag = Ttag.id) DESC,
spalten_name_alphabetisch
LIMIT 100
Ilja