SQL Recherche par ID

Résolu
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

  1. Modérateur
    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é.
    1. Modérateur
      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
  2. 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
    1. Modérateur
      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 ;-)))