2016-09-06 1 views
0

ich eine Tabelle namens Ringer haben die2 Tabellen verknüpfen und die Ergebnisse in absteigender Reihenfolge ausgibt, dann alphabetisch

id, wrestler_name,age 
1,Tom,24 
2,Fred,19 
3,Michael, 28 

hat Ich habe eine Tabelle unter Schreibern zu, dass

reviewer, id,score 
1,1,3 
1,2,3 
2,3,4 

Die Gutachter haben jeweils hat eine Reihe entsprechend der ID der Wrestler in der Wrestler-Tabelle und sie punkten jeden Wrestler.

Ich versuche, die Wrestler mit mindestens 200 Bewertungen zu finden. Ich möchte dann die Wrestler nach der Anzahl der Reviews sortieren (hoch zu niedrig) und dann nach ihren Namen in alphabetischer Reihenfolge für diejenigen, die die gleiche Bewertung haben.

Ich weiß, ich brauche eine innere zu verwenden beitreten und ich habe folgende versucht, aber ich kann nicht diese

select * from(select reviewers.id, wrestlers.name, count(*) from wrestlers inner join reviewers group by reviewers.id having count(reviewers.id) >= 200) order by count(*) DESC name; 

jedoch immer die Daten zur Ausgabe nimmt dies zu arbeiten.

Antwort

0

Es dauert ewig, weil die Datenbank jede Rezension mit jedem Wrestler kombiniert, weil du den Join-Zustand vergessen hast. Und Sie brauchen die Unterabfrage nicht:

SELECT id, 
     name, 
     count(*) 
FROM reviewers 
JOIN wrestlers USING (id) 
GROUP BY id 
HAVING count(*) >= 200 
ORDER BY count(*) DESC, name; 
Verwandte Themen