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 :

[Aide] Exercice SQL


Sujet :

Développement SQL Server

  1. #1
    Membre très actif
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Par défaut [Aide] Exercice SQL
    Bonjour tout le monde ....

    je suis bloqué dans une question qui demande :

    De faire une requete qui retourne toutes les paires de pilotes habitant la même ville ( sans doublon )


    voici la table pilote :
    Nom : faute2.png
Affichages : 761
Taille : 8,0 Ko

    Mon essaye qui donne bien sur erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select distinct p1.Ville ,COUNT(*), p1.nom
    from pilote  p1
    join  pilote p2
    on
    p1.Ville = p2.Ville
    group by p1.Ville
    having COUNT(*) > 1

    le resultat doit afficher : les trois pilotes sélectionner en jaune dans l'image
    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 699
    Par défaut
    Citation Envoyé par karimot Voir le message
    le resultat doit afficher : les trois pilotes sélectionner en jaune dans l'image
    Merci
    Un simple where Ville = 'Paris' ça le fait pas ?

  3. #3
    Membre très actif
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Par défaut
    si c'etait simple que ça j'aurais pas poster ce sujet....
    L'image c'est rien pour vous montrer qu'il faut retrouver les pilotes qui ont une ville identique
    par exemple avoir ce résultat :

    Nom_Pilote | Ville

    jean | Paris

    michael | Paris

    luc | Paris

    Yanis | Nice

    jack | Nice
    .
    .
    .
    .
    .
    .
    Vous comprenez maintenant .........

    Merci !

  4. #4
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Par défaut
    Soi je n'ai rien compris soit c'est tout simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT p1.nom, p1.Ville 
    FROM pilote  p1
    order by ville

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 699
    Par défaut
    Citation Envoyé par darkelend Voir le message
    Soi je n'ai rien compris soit c'est tout simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT p1.nom, p1.Ville 
    FROM pilote  p1
    order by ville
    Citation Envoyé par karimot Voir le message
    si c'etait simple que ça j'aurais pas poster ce sujet....
    Tu suis un peu ? LOL

    non mais plaisanterie mis a part faut être plus précis

    Si tu veux tout les pilotes qui sont dans plus d'une vile


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT p1.nom, COUNT(*) NbVilles
    FROM pilote  p1
    GROUP BY p1.nom
    HAVING COUNT(*) > 1

  6. #6
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Par défaut
    Si tu veux tout les pilotes qui sont dans plus d'une vile
    Je dirais que ton modèle de données ne permet pas d'avoir un pilote présent dans plusieurs villes. Mais cela dit, je peux me tromper car je n'ai pas le modèle de données. Fournis nous le DDL des tables et un jeu de données.

  7. #7
    Membre très actif
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Par défaut
    Nom : Hajaar.png
Affichages : 755
Taille : 186,8 Ko


    Voilà un exemple les deux ligne qui sont entouré en noir c'est ce qu'il faut afficher a la sortie pourquoi ?

    Nom : exemple.png
Affichages : 797
Taille : 3,3 Ko
    car la question est :


    De faire une requete qui retourne toutes les paires de pilotes habitant la même ville ( sans doublon )


    ils ont di les paires de pilotes il faut pas qu'il soit 3 pilotes qui ont la même ville seulement 2 4 6 8 ..... etc

    Pardon dans le debut moi meme j'avais pas compris la questions exactement puisque j'ai pas lu la question correctement

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 699
    Par défaut
    Citation Envoyé par karimot Voir le message
    Nom : Hajaar.png
Affichages : 755
Taille : 186,8 Ko


    Voilà un exemple les deux ligne qui sont entouré en noir c'est ce qu'il faut afficher a la sortie pourquoi ?

    Nom : exemple.png
Affichages : 797
Taille : 3,3 Ko
    car la question est :


    De faire une requete qui retourne toutes les paires de pilotes habitant la même ville ( sans doublon )


    ils ont di les paires de pilotes il faut pas qu'il soit 3 pilotes qui ont la même ville seulement 2 4 6 8 ..... etc

    Pardon dans le debut moi meme j'avais pas compris la questions exactement puisque j'ai pas lu la question correctement

    mais c'est super vicieux ^^

    Essai ta requete avec un Having count(*) % 2 <> 1
    modulo 2 quoi

  9. #9
    Membre très actif
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Par défaut
    Essai ta requete avec un Having count(*) % 2 <> 1


    Voilà mais ca n'a pas marché :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     SELECT distinct  pilote.nom 
     from pilote
     GROUP by  pilote.Ville
     Having count(*) % 2 <> 1
    Erreur mesage :

    Msg 8120, Level 16, State 1, Line 1
    Column 'pilote.nom' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

  10. #10
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 699
    Par défaut
    Citation Envoyé par karimot Voir le message
    ***

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     SELECT distinct  pilote.nom 
     from pilote
     GROUP by  pilote.Ville
     Having count(*) % 2 <> 1
    Erreur mesage :

    Msg 8120, Level 16, State 1, Line 1
    Column 'pilote.nom' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
    Hmm ... déjà tu ne peux pas avoir de group by sans fonction d'aggregat

    Ensuite le having n'est pas toute la réponse tu dois chercher aussi

    Maintenant que je connais mieux ton problème:
    Je ferais une requête qui me retourne simplement la table Pilote, avec un cross apply (ou un where exists) sur une sous requête qui elle contient le groupement avec le Having magique ;P

    Allez, là t'as tout pour pour faire. Si demain t'as rien je te la tape ta requête, mais ça sera la honte et les gens dans la rue te lanceront des cailloux en te montrant du doigt...

  11. #11
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    1) pour avoir des paires, vous devez effectivement mettre deux fois la table
    2) vous devez joindre sur la ville
    3) un pilote étant apparié avec lui même, vous devez éliminer le pilote qui fait la paire avec lui même (t1.pilote_id <> t2.pilote_id)
    4) si vous ne voulez pas les paires inverses (A et B MAIS AUSSI B et A), alors il faut faire une inéquijointure....

    PS: Christian Soutou ne serait pas content de voir que je vous aide !!!

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  12. #12
    Membre très actif
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Par défaut
    Voilà ce que j'ai pu faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT distinct P2.nom , P2.Ville 
    FROM pilote P1, pilote P2
    WHERE P1.VILLE = P2.VILLE
    	AND P1.pil# <> P2.pil#

    Et MERCI BEAUCOUP A VOUS

  13. #13
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par karimot Voir le message
    Voilà ce que j'ai pu faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT distinct P2.nom , P2.Ville 
    FROM pilote P1, pilote P2
    WHERE P1.VILLE = P2.VILLE
    	AND P1.pil# <> P2.pil#

    Et MERCI BEAUCOUP A VOUS
    C'est vraiment une requête dégueulasse (jointure dans la clause FROM !!!) et vous ne lisez pas ce que l'on vous dit !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT P2.nom , P2.Ville --> distinct sert a rien
    FROM pilote P1
         JOIN pilote P2 --> jointure avec JOIN / ON
              ON P1.VILLE = P2.VILLE
    	AND P1.pil# < P2.pil#   --> inéqui jointure
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  14. #14
    Membre très actif
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Par défaut
    J'ai Pas compris cette condition a quoi sert ?!

    pourquoi P2.Pil# inferieur a P1.pil#

    et pourquoi pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AND P1.pil# <> P2.pil#

  15. #15
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    Encore une fois vous ne lisez pas les messages que l'on vous met.

    Relisez moi !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  16. #16
    Membre très actif
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Par défaut
    Non c'est pas ça le but je suis désolé ...

    c'est faux voilà une capture écran bien clair

    Nom : Hajaar.png
Affichages : 760
Taille : 45,6 Ko


    Le plus pire c'est que luc est dupliqué
    et il faut pas afficher les non pair seulement les pairs qui ont la même ville
    comme les deux pilotes de grenoble ...

    PS : SI vous Avez un cours bien clair sur inéqui jointure je comprends pas comment ça marche cette condition je voudrais faire une simulation en quelque exemple avec le produit cartésien et voir comment cette condition marche étape par étape... mais aprés avoir le resultat je pense pas qu'elle est placé dans le bon endroit je m'embrouille sincèrement

  17. #17
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    respectez la charte de postage en donnant un jeu d'essai (CREATE des tables, INSERT des données et résultat attendu...) C'est le seul moyen d'être d'accord !

    A +

    PS pour le tuto : mon site WEB comme le livre !
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  18. #18
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select * from pilote
    where ville in
    (select ville from pilote
    group by ville
    having(count(ville)>1) and COUNT(ville) like '%[02468]')
    order by ville

Discussions similaires

  1. besoin d'aide pl/SQL
    Par toome dans le forum PL/SQL
    Réponses: 1
    Dernier message: 13/12/2005, 15h26
  2. Besoin d'aide requete sql
    Par dinde dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/10/2005, 09h09
  3. problemes exercices sql
    Par siciliano_messinese dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/09/2005, 16h52
  4. [Aide requete SQL]
    Par viny dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 22/04/2005, 17h00
  5. aide PL/SQL syntaxes [debutant] [mauvaise doc]
    Par sdeb dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 19/01/2004, 12h59

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