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 :

Jointure externe et Count


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 20
    Points : 8
    Points
    8
    Par défaut Jointure externe et Count
    Bonjour à tous,

    J'essaye d'ajouter un COUNT sur une requête avec joiture externe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT ptg_id, ptg_nom, ville_nom, eval_global, ( 6371 * acos( cos( radians( 47.6348235 ) ) * cos( radians( ptg_lat ) ) * cos( radians( ptg_lng ) - radians( 2.8083112 ) ) + sin( radians( 47.6348235 ) ) * sin( radians( ptg_lat ) ) ) ) AS distance
    FROM ptg_ptg AS ptg
    LEFT JOIN ptg_eval ON ptg_eval.eval_ptg = ptg.ptg_id
    JOIN geo_ville ON ptg.ptg_ville = geo_ville.ville_id
    HAVING distance < 20
    ORDER BY distance
    LIMIT 0 , 10
    J'aimerais compter pour chaque "ptg" son nombre d'eval_global. J'ai essayé de placer un COUNT dans le select mais les "ptg" n'ayant pas d'évaluation n'apparaissent pas dans le résultat de ma requête.

    J'avoue ne pas avoir trouvé comment faire

    Merci à tous

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Il faut un COUNT + un GROUP BY !
    Comme je ne suis pas sûr que le calcul de la distance puisse se faire dans la même requête, essaie avec une sous-requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT t.ptg_id, t.ville_nom, t.distance, COUNT(v1.eval_global) AS nb_eval_global
    FROM (
        SELECT p.ptg_id, v.ville_nom, 
            ( 6371 * acos( cos( radians( 47.6348235 ) ) * cos( radians( p.ptg_lat ) ) * cos( radians( p.ptg_lng ) - radians( 2.8083112 ) ) + sin( radians( 47.6348235 ) ) * sin( radians( p.ptg_lat ) ) ) ) AS distance
        FROM ptg_ptg AS p
        INNER JOIN geo_ville AS v ON v.ville_id = p.ptg_id
        WHERE distance < 20
    ) AS t
    LEFT OUTER JOIN ptg_eval AS e ON e.eval_ptg = t.ptg_id
    GROUP BY t.ptg_id, t.ville_nom, t.distance

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Merci pour ta réponse, j'obtiens cependant une erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Unknown column 'distance' in 'where clause'
    J'avais aussi de mon coté essayé de faire une sous-requête mais sans succès.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Alors au lieu de distance, il faut reprendre la formule complète de la distance.

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    J'ai remplacé par la formule complète et ça fonctionne super bien ! J'ai cependant enlevé le "v1." à la première ligne, modifier la jointure sur la table ville qui comportait une erreur et afficher aussi le ptg_nom.

    Merci beaucoup pour ton aide !!

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

Discussions similaires

  1. Jointure externe sur "plusieurs critères" et COUNT
    Par Theophane631 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 12/08/2013, 18h51
  2. COUNT et jointure externe
    Par Bobotaku dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/01/2012, 11h26
  3. [CR9] faire une Jointure externe
    Par coldec dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 28/06/2005, 12h10
  4. [ jointure externe ] j'y pompe rien
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/12/2003, 17h57
  5. [Interbase] [Triggers] jointure externe
    Par AnestheziE dans le forum InterBase
    Réponses: 9
    Dernier message: 17/11/2003, 16h17

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