Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/04/2011, 12h28   #1
Invité de passage
 
Inscription : mai 2008
Messages : 23
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 23
Points : 4
Points : 4
Par défaut Une requête SQL!

Bonjour,
Je suis sur un projet de géolocalisation (http://fr.wikipedia.org/wiki/Géolocalisation). Dans la table data (tr_imei, tr_datetime, tr_lat, tr_lng), sont stockées à chaque minute des informations de position de chaque traceur.
J'utilisais une requête pour chaque traceur afin de recueillir sa dernière position en PHP connaissant bien sûr l'imei de chaque traceur stocké dans une autre table. Le bémol, c'est que je n'arrive pas à faire une pagination suivant que le nombre de traceurs dépasse 50, 75...
Je voudrais maintenant exécuter une SQL pouvant m'afficher les dernières informations de position respectives pour tous les traceurs en une seule requête .
(Le problème revient à ceci: Dans une table-association t (e1_id, e2_id, col3, col 4) issue de deux tables e1(e1_id), e2(e2_id) où les informations par exemple pour la colonne e1_id ne sont pas uniques. Comment sélectionner le maximum de chaque valeur distincte de la colonne e1_id?)
Merci de votre contribution
mario002e est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 12h55   #2
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour

Quelque chose comme ceci :
Code SQL :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
SELECT
	D.tr_imei,
	D.tr_datetime,
	D.tr_lat,
	D.tr_lng
FROM (
	SELECT tr_imei, MAX(tr_datetime) AS LastDT
	FROM DATA
	GROUP BY tr_imei
) L --Derniere date par imei
INNER JOIN DATA D
	ON D.tr_imei = L.tr_imei
	AND D.tr_datetime = L.LastDT

si elle n'existe pas déjà, placez une contrainte d'unicité sur le couple tr_imei/tr_datetime
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 14h08   #3
Invité de passage
 
Inscription : mai 2008
Messages : 23
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 23
Points : 4
Points : 4
ça marche nickel!
Merci beaucoup pour votre précieuse intervention!
mario002e est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h46.


 
 
 
 
Partenaires

Hébergement Web