[SQL] Nach Anzahl sortieren

groe

lo0l
ID: 134786
L
26 April 2006
224
16
Hi,
(edit)
habe ein DB-Design das wie folgt aufgebaut ist (leider nicht ganz optimal, aber ich muss damit nunmal arbeiten).

Also, mein Problem:
Code:
[B]Tabelle "members":
[/B]id
name
Code:
[B]Tabelle "entrys":
[/B]id
m_id1
m_id2
m_id3
m_id4
m_id5
(In den Feldern m_id[1-5] werden jeweils IDs der Tabelle Members gespeichert.)


Nun möchte ich die Tabelle members, sortiert nach der Häufigkeit des Vorkommens in einem der 5 m_id Felder der Tabelle entrys, ausgeben.

Zum besseren Verständnis ein kleines Beispiel:
Code:
[B]Tabelle "members":
[/B]id name
1  max
2  tim
3  tom
Code:
[B]Tabelle "entrys":
[/B]id m_id1 m_id2 m_id3 m_id4 m_id5
1  1       2       0       0       0
2  3       2       0       0       0
3  3       0       0       0       0
4  1       3       0       0       0
5  2       3       0       0       0
Da hier die Member-ID 3 vier mal und damit am häufigsten in der Tabelle entrys vorkommt, soll die gewünschte Ausgabe dann so aussehn:
Code:
Tom
Tim
Max

Ich hoffe, ich habe mich verständlich ausgedrückt und jemand kann mir bei meinem Problem helfen ;)

LG
groe
 
Zuletzt bearbeitet:
Hi,

eventuell könnte man für jeden Benutzer eine Abfrage machen mittels COUNT() und GROUP BY().

Allerdings sieht das DB-Design nicht optimiert aus, ich würde die m_id[x] wie folgt auslagern:

Code:
id (int unsigned not null auto increment)
entry_id (int unsigned not null - Fremdschlüssel aus entrys)
m_id_value
m_id_x

Ist so sicher nicht ganz optimal, da ich die Aufgabenstellung an die DB nicht kenne, sollte aber einen Ansatz darstellen. Dann kann man das abfragen mittels
Code:
SELECT COUNT(*),members.name FROM NAME_DER_NEUEN_TABELLE
INNER JOIN members ON members.id = NAME_DER_NEUEN_TABELLE.m_id_value
GROUP BY NAME_DER_NEUEN_TABELLE.m_id_value
ORDER BY COUNT(*) DESC

Könnte man allerdings eventuell noch optmieren.

Gruß

P.S.: Schon alleine weil du dein Problem übersichtlich dargestellt hast macht das Antworten hier mal mehr Spaß :mrgreen:

edit: hab noch was verbessert
 
Zuletzt bearbeitet: