2016-06-20 14 views
-2

Ich benutze eine Limit-Abfrage, um eine Liste der Top-5-Regisseure zu erhalten, die auch die Summe ihrer Werke zählen, z.Gleicht Werte mit der letzten begrenzten Zeile

a 137 
b 120 
c 90 
d 76 
e 52 

Es funktioniert wirklich, aber was ist, wenn mit der letzten Zeile auch einige Namen mit gleichen Arbeiten sind. Und es geschieht usally ...

f 52 
g 52 
h 52... 

die Abfrage:

SELECT 
    T_people.person, 
    COUNT(ID_films) AS CountOfID_films 
FROM 
    ((MT_films 
    JOIN ST_peoplefilms ON ((MT_films.ID_films = ST_peoplefilms.ID_films))) 
    JOIN T_people ON ((T_people.ID_person = ST_peoplefilms.ID_person))) 
GROUP BY T_people.person, T_people.man 
HAVING (T_people.man = 1) 
ORDER BY COUNT(ST_peoplefilms.ID_films) DESC 
LIMIT 5 

danken ist viel

+0

Nun, die Frage ist, auch alle gleichen Werte mit der letzten Zeile zu bekommen. thanks –

+0

Wenn Sie möchten, sollten Sie diese einfache zweistufige Vorgehensweise befolgen: 1. Wenn Sie dies noch nicht getan haben, geben Sie die richtigen CREATE- und INSERT-Anweisungen (und/oder sqlfiddle) an, damit wir das Problem leichter replizieren können. 2. Wenn Sie dies noch nicht getan haben, geben Sie eine gewünschte Ergebnismenge ein, die den Informationen in Schritt 1 entspricht. – Strawberry

Antwort

0

eine Unterabfrage erstellen, die die Top-5-Summen gibt. Dann verwenden Sie, was Sie jetzt haben (Sie können LIMIT 5 und die Bestellung entfernen) und INNER JOIN auf die Unterabfrage in Bezug auf die Summen anwenden. Dadurch werden alle nicht relevanten Zeilen herausgefiltert.

+0

Lieber Gruber, Es gibt bereits die Top 5 Namen zurück, aber wie man der Unterabfrage beitritt, um auch alle Gleichen mit der 5 zurückzugeben ein? Danke –

+0

@Kostas Konstantinidis: Sie treten _mit Bezug auf die oberen 5 Summen_ (die Integer-Werte, die Sie in Ihrer Unterabfrage haben), auf diese Weise stellen Sie sicher, dass alle Einträge mit einer Gesamtzahl unter den Top 5 und nichts anderes zurückgegeben werden. – Gruber

Verwandte Themen