sql relation premiers enregistrementsAmis développeurs il arrivera certainement le jour ou vous chercherez à connaitre les X premiers/derniers enregistrements liés à une autre table via une requête SQL. J'ai eu plus spécifiquement le cas pour un logiciel de versioning dans lequel je voulais qu'une requête retourne les dernières versions de chaque fichier et la solution suivante peut vous permettre d'économiser pas mal de traitements couteux. On pourrait imaginer la même chose pour des rubriques et des articles, un classement de joueurs ou tout autre problématique induisant de récupérer un nombre limité d'enregistrements liés par une clef étrangère.

En considérant 2 tables categorie et element on pourrait chercher toutes les catégories puis dans une seconde méthode retourner les éléments mais heureusement le trick de la division relationnelle ci-dessous facilite grandement la tâche et permet de résoudre notre problématique dans une seule requête. Si on se penche sur le code on comprend que la seconde requête permet de connaître le nombre de résultats correspondants à sa clause where et le test "< n" permet alors de limiter les résultats de la requête initiale. Vous pouvez alors ajuster n et le sens du tests afin déterminer si la requête renvoie les n premiers ou n derniers résultats et pourquoi pas ajouter d'autres tests, pour mon cas sur des dates par exemple.

En tout cas ce code fonctionne bien, enjoy.

Citation :

SELECT
   e.id_element, e.nom_element, c.id_categorie, c.nom_categorie
FROM
   ELEMENT e
   INNER JOIN
   CATEGORIE c ON e.id_categorie = c.id_categorie
WHERE
   (
      SELECT COUNT(*)
      FROM ELEMENT e1
      WHERE e1.id_categorie = e.id_categorie
      AND e1.id_element > e.id_element
   ) < n


Source http://mysql.developpez.com/
Partager sur:
A propos de l'auteur:
Guillaume Jeantet: titulaire d'une licence pro et fort de quelques années d'expériences je suis administrateur système et développeur mais surtout un autodidacte dynamique et passionné. Je partage sur UBDT mes coups de coeurs et astuces.

Autres articles qui pourraient vous intéresser.

windev champ html version ieWindev: version internet explorer du champ html (WebBrowser control)
Comment forcer la version plus récente d'internet explorer dans le champ html windev ou le WebBrowser control.
windev acces natif non installeWindev: accès natif mysql non installé
Parfois après l'installation de l'accès natif mysql windev indique toujours dans l'écran de configuration des connexions que l'accès natif n'est pas installé. Voyons comment corriger ce problème.
windev houvreconnexion long timeoutWindev: HOuvreConnexion très long
Lors de vos développements windev ou en phase de support vous constaterez peut être que vos appels à la fonction HOuvreConnexion peuvent être très long. J'ai une solution à vous proposer impliquant dns pour pallier ce comportement ayant fonctionné pour moi.

Proposer un nouveau commentaire

Votre pseudo s'il vous plaît :

Email (Facultatif, n'est pas affiché et permet de recevoir des notifications de validation / réponses):

Votre site Web (facultatif) :

Exprimez vous :

:arrow::D:confused::cool::cry::eek::evil::!::idea:lol:mad::|:?::p:redface::rolleyes::(:):wink: