Trier par suite de la sous-requête MySQL

J'ai une table qui contient un enregistrement pour tous les éléments téléchargeables et une autre table qui contient un enregistrement de chaque téléchargement qui inclut la date du téléchargement et de l'id de l'élément et l'utilisateur qui l'ont téléchargé.

Quand j'ai une liste d'éléments de la base de données je veux la requête de regarder combien de fois un article a été téléchargé à l'autre de l'élément de données.

Voici mon SQL:

SELECT t1.*, 
(SELECT COUNT(*) 
    FROM tl_downloads 
    WHERE item_id = t1.id
    AND download_date > ?) 
AS downloads_count 
FROM tl_items AS t1 
ORDER BY downloads_count DESC

La requête ci-dessus fonctionne très bien dans le sens que je reçois une colonne supplémentaire dans les résultats appelée "downloads_count' qui contient le nombre correct mais il ne me laisse pas l'ordre par cette valeur.

Que dois-je faire pour être en mesure de faire pour mes résultats par la valeur retournée dans la sous-requête?

Laissez-moi savoir si vous avez besoin de plus d'infos!

Edit - données-Échantillon

tl_items                tl_downloads

id  name                id  item_id  download_date
1   Item 1              1   1        1385964000 
2   Item 2              2   1        1385964000
3   Item 3              3   3        1385964000

Les résultats que j'attends serait:

Item 1 - Downloads 2
Item 3 - Downloads 1
Item 2 - Downloads 0

Grâce

Votre exemple semble fonctionner très bien fait: SQL Violon. Mais une jointure serait probablement la meilleure solution, de toute façon.

OriginalL'auteur jd182 | 2013-02-18