MySQL - COUNT() über 2 Tabellen

proloser

Erfahrenes Mitglied
Hallo,

ich habe Bilder mit einem "Gefällt mir" button und möchte damit die Bilder, die den Usern am häufigsten gefallen, ganz oben sind.

Tabelle "image"
id | image

Tabelle "favorite"
image_id


Versucht hab ich folgendes:
SQL:
SELECT 
  a.*, b.*

FROM 
  image a
  
LEFT JOIN 
  favorite b 
      
ON  
  a.id = b.image_id
            
ORDER BY 
  COUNT(b.image_id) DESC

Ich möchte auch die Bilder ausgeben, die noch nicht in der "favorite" Tabelle vorhanden sind.
Ich hoffe ihr könnt mir weiter helfen.

Gruß proloser
 
Zuletzt bearbeitet von einem Moderator:
Eine Aggregatfunktion wie COUNT() erfordert ein GROUP BY.
Und wenn du die Fotos, welche noch nicht in der Favoritentabelle sind nach den anderen angezeigt bekommen willst, fehlt noch was bei ORDER BY
SQL:
SELECT 
  a.*, b.*
 
FROM 
  image a
  
LEFT JOIN 
  favorite b 
      
ON  
  a.id = b.image_id

GROUP BY
  a.id

ORDER BY 
  b.image_id IS NULL, COUNT(b.image_id) DESC
 
Zurück