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

Langage SQL Discussion :

Une requête un peu complexe.


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut Une requête un peu complexe.
    Bonjours à tous!

    J'ai besoin d'aide sur une requête un peu compliquée pour moi....
    je vais essayer de vous expliquer le plus clairement possible.

    Voila, j'ai une table qui s'appelle "radar" qui contient une liste de radar mobile (sur les routes donc) avec tout son historique. C'est à dire qu'un radar peut être présent plusieurs fois au même endroit (mêmes coordonées GPS).

    Mon but est de faire un "TOP 40" des apparitions dans la base de données : Trier en fonction du nombre d'apparition des radars au même endroit. De plus chaque enregistrement a un "commentaire" et il faudrait afficher le dernier commentaire enregistré pour illustré le top 40.

    En espérant avoir été assez clair. N'hésitez pas à me demander plus de précisions et merci pour votre aide!

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    L'explication est assez claire, par contre, pourrais tu donner la structure des tables en jeu ? (si tu as essayé une requête, n'hésites pas à la poster, ça peut aussi aider a mieux comprendre ce que tu veux)

    Peux-tu aussi préciser ton SGBDR ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Bonjour,

    L'explication est assez claire, par contre, pourrais tu donner la structure des tables en jeu ? (si tu as essayé une requête, n'hésites pas à la poster, ça peut aussi aider a mieux comprendre ce que tu veux)

    Peux-tu aussi préciser ton SGBDR ?
    Merci de ta réponse.

    alors en fait cela ne concerne qu'une seule table, la table "radar" dont voici la structure :

    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
    20
    21
    22
    23
    24
    CREATE TABLE radar
    (
    -- Hérité(e) from table evenement:  id integer NOT NULL DEFAULT nextval('evenement_id_seq'::regclass),
    -- Hérité(e) from table evenement:  "position" text,
    -- Hérité(e) from table evenement:  direction text,
    -- Hérité(e) from table evenement:  commentaire text,
    -- Hérité(e) from table evenement:  valide boolean,
    -- Hérité(e) from table evenement:  "jourDeFete" text,
    -- Hérité(e) from table evenement:  "zoneParticuliere" text,
    -- Hérité(e) from table evenement:  "conditionMeteo" text,
    -- Hérité(e) from table evenement:  debut bigint,
    -- Hérité(e) from table evenement:  "dureeDeVie" bigint,
    -- Hérité(e) from table evenement:  prenoms text,
    -- Hérité(e) from table evenement:  departement text,
    -- Hérité(e) from table evenement:  rue text,
    -- Hérité(e) from table evenement:  ville text,
    -- Hérité(e) from table evenement:  afficher boolean DEFAULT true,
    -- Hérité(e) from table evenement:  "idGroupe" integer,
      "typeDeRadar" text,
      "typeDeVehicule" text,
      "couleurDuVehicule" text,
      vitesse integer,
      CONSTRAINT "primaireRadar" PRIMARY KEY (id)
    )
    Comme on peut le voir, j'hérite certaines colonnes d'une autre table, mais cela reviens à manipuler la table radar. Et j'utilise PostgreSQL comme SGBD.

    les champs qui nous intéresses donc sont les champs "position", ainsi que le champs "commentaire".

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Citation Envoyé par kitoufloux Voir le message
    les champs qui nous intéresses donc sont les champs "position", ainsi que le champs "commentaire".
    ... et debut que j'ai pris comme reference pour rechercher le "dernier" commentaire (est-ce un timestamp ?)
    Je suppose qu'il ne peut y avoir deux lignes ayant le même debut à la même position...

    hmmm, position => text...ce sont les coordonnées GPS ?
    tu risque d'avoir des surprises ! (à 1 cm près, ce n'est plus la même position)...
    regarde donc d'ou proviennent les données...

    est-ce que cette requete te donne ce que tu veux ?

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT R1.position, R1.Nb, R2.commentaire
    FROM (
    	SELECT TOP 40
    		position,
    		COUNT(*) AS Nb,
    		MAX(debut) AS LastDate
    	FROM radar 
    	GROUP BY position
    	ORDER BY COUNT(*) DESC
    	) R1 
    INNER JOIN Radar R2 
    	ON R1.position = R2.Position 
    	AND R1.LastDate = R2.debut

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    ... et debut que j'ai pris comme reference pour rechercher le "dernier" commentaire (est-ce un timestamp ?)
    Oui en effet, et oui c'est un timestamp.

    Citation Envoyé par aieeeuuuuu Voir le message
    Je suppose qu'il ne peut y avoir deux lignes ayant le même debut à la même position...
    non, en effet.

    Citation Envoyé par aieeeuuuuu Voir le message
    hmmm, position => text...ce sont les coordonnées GPS ?
    tu risque d'avoir des surprises ! (à 1 cm près, ce n'est plus la même position)...
    regarde donc d'ou proviennent les données...
    Oui ce sont des coordonées GPS, mais elles sont rentrées à la main et ce sont en fait des copies d'enregistrements, donc se seront exactement les mêmes, pas de soucis de ce coté là.

    Citation Envoyé par aieeeuuuuu Voir le message
    est-ce que cette requete te donne ce que tu veux ?

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT R1.position, R1.Nb, R2.commentaire
    FROM (
    	SELECT TOP 40
    		position,
    		COUNT(*) AS Nb,
    		MAX(debut) AS LastDate
    	FROM radar 
    	GROUP BY position
    	ORDER BY COUNT(*) DESC
    	) R1 
    INNER JOIN Radar R2 
    	ON R1.position = R2.Position 
    	AND R1.LastDate = R2.debut
    Dans PgAdmin j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ERROR:  syntax error at or near "40"
    LINE 3:  SELECT TOP 40
                        ^
     
     
    ********** Erreur **********
     
    ERROR: syntax error at or near "40"
    État SQL :42601
    Caractère : 62

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    pardon, sous Postgre, il faudra peut etre utiliser :


    en fin de sous-requete à la place du top 40

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

Discussions similaires

  1. requête un peu complexe pour moi
    Par remrem59 dans le forum Requêtes
    Réponses: 5
    Dernier message: 04/07/2011, 17h07
  2. requête un peu complexe pour moi (delete + distinct + max)
    Par mdr_cedrick dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/08/2008, 12h38
  3. Requête un peu complexe
    Par yblok dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 29/04/2008, 14h21
  4. Construction d'une requête un peu complexe
    Par dauphin34000 dans le forum SQL
    Réponses: 9
    Dernier message: 24/05/2007, 11h43
  5. Création d'une requête un peu complexe
    Par vpicchi dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 17/01/2007, 21h52

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