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
    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
    1. 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
      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é.
        0
        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
          0