2016-11-08 2 views
0

Ich bekomme ein Problem mit dem Abrufen des Rangs nach der Anzahl.Wie bekomme ich Rang nach Anzahl in Mysql

Ich habe zwei Tabellen:

1)images 
2)images_like 

Wenn nun die images_like keine Einträge haben, dann ist es „NULL“ in den Reihen zeigt. Bitte überprüfen Sie die Abfrage und Ausgabe:

SELECT im.id, 
    rank 
FROM (SELECT image_id, 
       @rownum := @rownum + 1 AS rank, 
       Count(*)    AS cnt 
     FROM images_like, 
       (SELECT @rownum := 0) r 
     GROUP BY image_id 
     ORDER BY `cnt` DESC) AS d 
     RIGHT JOIN images AS im 
       ON d.image_id = im.id 

enter image description here

ich brauche 3 nicht null angezeigt werden ....

Vielen Dank im Voraus !!!!!

+0

Siehe http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me -zu-eine-sehr-einfache-SQL-Abfrage - beachten Sie, dass RIGHT JOINs verschwindend selten sind. – Strawberry

+0

bitte geben Sie die Beispieldaten in Ihren Tabellen an – Viki888

Antwort

0

Versuchen wie folgt aus:

SELECT im.id, d.rank 
FROM 
(    
    SELECT t.image_id, @rownum := @rownum + 1 AS rank 
    FROM 
     (    
      SELECT image_id, 
       Count(*) AS cnt 
      FROM images_like 
      GROUP BY image_id 
      ORDER BY `cnt` DESC) AS d  
     ) t, 
    (SELECT @rownum := 0) r   
) d  
RIGHT JOIN images AS im ON d.image_id = im.id 
+0

danke aber funktioniert nicht !!! –