SQL Recherche par ID

Résolu/Fermé
johann74270 - 1 mai 2015 à 15:31
jee pee Messages postés 40208 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 18 septembre 2024 - 1 mai 2015 à 16:12
Bonjour,

J'ai 3 Tables :
JOIN_VIDEO_CATEGORY (ID, ID_VIDEO, ID_CATEGORY)
JOIN_VIDEO_CLICKED (ID, ID_VIDEO, CLICKED)
VIDEO (ID, TITRE)

Je souhaite en une requête obtenir les vidéos de la catégorie N°94 dans l'ordre des vidéos les plus cliquées.

Une idée ?
Merci

3 réponses

jee pee Messages postés 40208 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 18 septembre 2024 9 330
Modifié par jee pee le 1/05/2015 à 15:54
Bonjour,

select titre, cliked from JOIN_VIDEO_CATEGORY, JOIN_VIDEO_CLICKED, VIDEO
where JOIN_VIDEO_CATEGORY.ID_VIDEO=VIDEO.ID
and JOIN_VIDEO_CLICKED.ID_VIDEO=VIDEO.ID
and JOIN_VIDEO_CATEGORY.ID_CATEGORY='94'
order by cliked desc


En mysql, de façon plus native on utilisera les jointures (INNER JOIN). Mais je ne me suis pas habitué à cette syntaxe.


cdlt
        Un étranger, c'est un ami qu'on n'a pas encore rencontré.
0
jee pee Messages postés 40208 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 18 septembre 2024 9 330
Modifié par jee pee le 1/05/2015 à 16:02
Aller un essai avec les jointures, ainsi je pourrais avoir des corrections sur la syntaxe si je commets des erreurs ;-)

select titre, cliked from VIDEO
INNER JOIN JOIN_VIDEO_CATEGORY
ON JOIN_VIDEO_CATEGORY.ID_VIDEO=VIDEO.ID
INNER JOIN JOIN_VIDEO_CLICKED
ON JOIN_VIDEO_CLICKED.ID_VIDEO=VIDEO.ID
where JOIN_VIDEO_CATEGORY.ID_CATEGORY='94'
order by cliked desc
0
Re
SELECT * FROM VIDEO WHERE ID IN (
SELECT * FROM (
SELECT ID_VIDEO FROM JOIN_VIDEO_CLICKED WHERE ID_VIDEO IN (
SELECT ID_VIDEO FROM JOIN_VIDEO_CATEGORY WHERE ID_CATEGORY = 94
)ORDER BY CLICKED DESC) AS TEMP) LIMIT 1

Résolu


J'ai trouvé une solution qui correspond à mes besoins
0
jee pee Messages postés 40208 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 18 septembre 2024 9 330
1 mai 2015 à 16:12
Si pour une requête simple as besoin de 3 sous select imbriqués, je ne sais pas comment tu feras quand cela se compliquera.

Là tu as décomposé le problème en unités simples que tu savais résoudre et tu les as empilées. Il faut que tu travailles les jointures ;-)))
0