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 :

Besoin d'une correction d'exercice très simple SQL SOUS-REQUETES


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Besoin d'une correction d'exercice très simple SQL SOUS-REQUETES
    Bonsoir à tous,

    il y a un exercice que ma professeur n'a pas corrigé.
    Je l'ai fait donc j'aimerai avoir une correction pour voir mes erreurs s'il y en a.

    Voici l'ennoncé :


    Soit une base de données représentée par les tables suivantes :

    personne (id, nom, prenom, dateNaiss)

    voiture (immat, marque, année, prix, idProp)

    Traduire les requetes suivantes en SQL :

    1. Nom et prénom des personnes n'ayant pas de voiture.

    2. Nom et prénom des personnes qui n'ont pas de voiture de plus de 20 000.

    3. Nom et prénom de la personne qui possède la voiture la plus chère.

    4. Nom et prénom de la personne qui possède le plus de voiture.

    Je remercie d'avance ceux qui m'aideront

  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 : 60
    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 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Et votre solution ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Excusez moi j'avais pas réfléchi, je pensais comparer avec une correction

    Alors voici ce que j'ai fait :

    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id, nom, prenom FROM personne, voiture WHERE (personne.id=voiture.idProp) AND (id NOT IN (SELECT idProp FROM voiture));
    2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id, nom, prenom FROM personne, voiture WHERE (personne.id=voiture.idProp) AND (id NOT IN (SELECT idProp FROM voiture WHERE prix>20000));
    3)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id, nom, prenom FROM personne, voiture WHERE (personne.id=voiture.idProp) AND (prix>=ALL(SELECT prix FROM voiture));
    4)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SELECT P.nom, P.prenom, P.id, V.immatriculation FROM voiture V, personne P WHERE P.id=V.idProp GROUP BY immatriculation, id, nom, prenom HAVING COUNT(*)>=ALL(SELECT COUNT(*), immatriculation FROM voiture GROUP BY immatriculation);

  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 : 60
    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 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    1) Les jointures s'écrivent depuis plus de 20 ans (1992) avec l'opérateur JOIN. Il serait temps de s'y mettre !

    2) Une requête correctement indentée et aérée est plus facile à lire, à comprendre, à débugguer.

    3) L'utilisation d'alias rend la requête plus facile à lire et à débuguer. Il est fortement recommandé de les utiliser systématiquement dès qu'une requête emploie plus d'une table.


    Soit une base de données représentée par les tables suivantes :

    personne (id, nom, prenom, dateNaiss)

    voiture (immat, marque, année, prix, idProp)
    1. Nom et prénom des personnes n'ayant pas de voiture.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id, nom, prenom FROM personne, voiture WHERE (personne.id=voiture.idProp) AND (id NOT IN (SELECT idProp FROM voiture));
    Ça peut marcher mais en fait avec votre WHERE, la jointure est inutile

    Je ferais plutôt comme ça avec une jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT p.id, p.nom, p.prenom 
    FROM personne p
    LEFT OUTER JOIN voiture v ON p.id = v.idProp
    WHERE v.idProp IS NULL
    Ou encore ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT p.id, p.nom, p.prenom 
    FROM personne p
    WHERE NOT EXISTS (
    	SELECT *
    	FROM voiture v
    	WHERE v.idProp = p.id
    )
    Désolé, pas le temps de corriger les autres, faut que je parte.

    Voir aussi les cours et tutoriels SQL : http://sql.developpez.com
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/04/2010, 00h36
  2. Besoin d'une correction sur une requête
    Par Nessie37 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 11/12/2007, 18h47
  3. Annale examen, besoin d'une correction
    Par keumlebarbare dans le forum C++
    Réponses: 14
    Dernier message: 09/05/2007, 07h20
  4. Réponses: 14
    Dernier message: 20/09/2006, 21h07
  5. besoin d'une correction sur un exercice.
    Par phakso dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 03/03/2006, 10h01

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