IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Une requete qui me semblait simple à ecrire


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 44
    Par défaut Une requete qui me semblait simple à ecrire
    Salut à tous,

    cela me paraissait très simple à faire mais je dois être fatigué

    On a une table qui contient des cibles à pinguer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Id         adresse         nom       
    ----------------------------------
    1          8.8.8.8         DNS1 Google
    2          ns1.ovh.net  DNS ovh
    3          8.8.4.4         DNS2 Google
    dans l'autre table on a les résultats des ping

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    id       IdCible       DateHeure              Delais
    ------------------------------------------------------------
    1        1               12/01/2012 21:43:34.786   5
    2        1               11/12/2012 11:34:54.763   12
    3        3               12/03/2012 03:43:34.786   4
    4        2               05/11/2012 08:23:02.542   7
    Je cherche juste à avoir de la manière la moins couteuse le dernier ping et son délais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Id         adresse        nom                dateheure            Delais 
    ------------------------------------------------------------------------------------
    1          8.8.8.8         DNS1 Google   11/12/2012 11:34:54.763   12
    2          ns1.ovh.net  DNS ovh          05/11/2012 08:23:02.542   7
    3          8.8.4.4         DNS2 Google   12/03/2012 03:43:34.786   4
    J'arrive bien à faire un groupby Max(dateHeure) et Id, mais impossible de mettre les détails sans générer de nouvelles lignes.

    Je sais bien que c'est très basique mais là je perds le nord

    Merci d'avance, Nico

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    En fait vous devez extraire la date de dernier ping "séparément" parce qu'il faut un agrégat dont le résultat sert pour le prédicat de jointure à la table de journalisation des pings. Donc on peut le faire soit avec une sous-requête, soit avec une expression de table commune (CTE). Voici donc l'expression avec les CTE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    ;WITH
    	CTE AS
    	(
    		SELECT	IdCible
    			, MAX(DateHeure) AS heure_dernier_ping
    		FROM	dbo.ping
    		GROUP	BY IdCible
    	)
    SELECT		T.Id
    		, T.adresse
    		, T.nom
    		, C.heure_dernier_ping
    		, P.Delais
    FROM		dbo.cible AS T
    INNER JOIN	CTE AS C
    			ON T.Id = C.IdCible
    INNER JOIN	dbo.ping AS P
    			ON C.IdCible = P.IdCible
    			AND C.heure_dernier_ping = P.DateHeure
    Et l'expression avec la sous-requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SELECT		T.Id
    		, T.adresse
    		, T.nom
    		, C.heure_dernier_ping
    		, P.Delais
    FROM		dbo.cible AS T
    INNER JOIN	(
    			SELECT	IdCible
    				, MAX(DateHeure) AS heure_dernier_ping
    			FROM	dbo.ping
    			GROUP	BY IdCible
    		) AS C
    			ON T.Id = C.IdCible
    INNER JOIN	dbo.ping AS P
    			ON C.IdCible = P.IdCible
    			AND C.heure_dernier_ping = P.DateHeure
    Dites-nous si cela résout votre problématique.

    @++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 44
    Par défaut
    Juste parfait !

    la clé était le troisième groupe avec la date isolée !

    Voilà mon code qui fonctionne très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SELECT		T.Id, T.AdresseCible, 
    			T.NomCible,
    			C.heure_dernier_ping,
    			P.Delais
    FROM		TaCibles AS T
    INNER JOIN	(
    			SELECT	IdCible
    				, MAX(DateHeure) AS heure_dernier_ping
    			FROM	Talogs
    			GROUP	BY IdCible
    			) AS C
    			ON T.Id = C.IdCible
    INNER JOIN	Talogs AS P
    			ON C.IdCible = P.IdCible
    			AND C.heure_dernier_ping = P.DateHeure
    Order By T.Id
    Grand merci !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] Problème de requete qui parait pourtant simple
    Par sephirothmana dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/06/2006, 11h02
  2. Réponses: 2
    Dernier message: 10/06/2006, 06h02
  3. [SQL] une requete qui fait mal a la tete
    Par MailOut dans le forum Langage SQL
    Réponses: 7
    Dernier message: 07/02/2005, 16h22
  4. une requete qui fonctionne aux 3/4...
    Par allowen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/01/2005, 22h08
  5. [VB6] recuperer une requete qui renvoie du xml
    Par voyageur dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 15/12/2004, 10h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo