CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : Question pour les pro du SQL

DébutPage précedente
1
Page suivantePage suivante
fazow fazow
MP
Niveau 53
24 avril 2018 à 15:05:04

Il y a dans ma base de données 3 tables :

  • Site
  • Compteur
  • ReleveCompteur

Comme vous pouvez l'imaginer, un releveCompteur est rattaché à un compteur et un compteur est rattaché à un site.
Je dois pouvoir récupérer le dernier relevé de chaque site.

Pour ce faire, pour l'instant je exécute la requête suivante sur chaque site :
SELECT s.nom, rc.date, rc.valeur FROM Site s, ReleveCompteur rc, Compteur c WHERE s.id = [l'id du site] AND c.siteId = s.id AND rc.compteurId = c.id ORDER BY rc.date DESC LIMIT 1;

Jusqu'ici ça allait très bien car j'avais seulement quelques sites de test.
Je devrais bientôt en avoir plusieurs centaines, donc je me vois mal faire 2000 fois la même requête.

Y'a t'il donc un moyen de récupérer de dernier relevé de chaque site en une seule requête ?

godrik godrik
MP
Niveau 22
24 avril 2018 à 16:02:56

Oui tu genere une list de (id, date de derniere releve) avec un select id, max(date) group by id sur la table releve. Et tu join cette liste avec la table de releve pour extraire la valeure.

fazow fazow
MP
Niveau 53
24 avril 2018 à 16:42:09

Effectivement, j'ai pu le faire avec une sous-requête dans le HAVING du GROUP BY .

:merci:

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment