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 :

Problème de requête


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Points : 74
    Points
    74
    Par défaut Problème de requête
    Bonjour,
    J'ai deux tables : A gauche : voiture (large = grande voiture), et à droite : contrat.

    Une voiture a un et un seul contrat.
    Je voudrais récupérer toutes les voitures avec leur contrat respectif s'il existe.

    J'ai fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select l.*, c.* From Large l, Contract c WHERE l.idLarge=c.cIdCar
    Mais cette requete ne me renvoie pas les voitures lorsqu'elles n'ont pas de contrat

    Comment faire pour avoir les voitures même celles qui n'ont pas de contrat ?
    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    566
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 566
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    Effectivement, tu as créé un filtre qui limite l'affichage des voitures ayant un contrat.

    Il faut également noter la présentation de requête qui n'est plus en corrélation avec les normes actuelles.

    Il serait plus lisible d'écrire tes requêtes ainsi :

    Pour obtenir toutes les voitures qui ont ou pas un contrat, il faut établir une jointure à droite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT L.*, C.*
    FROM large L
       LEFT JOIN CONTRAT C ON L.IDLARGE = C.IDCAR
    Si tu veux simplement les voitures ayant un contrat, la requête sera :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT L.*, C.*
    FROM large L
       INNER JOIN CONTRAT C ON L.IDLARGE = C.IDCAR
    Autre remarque, il vaut mieux indiquer les colonnes à retourner dans le SELECT plutôt que de créer la guerre des étoiles (citation de Cinephil).

    Il serait préférable que les liaisons des tables par une clé étrangère comporte la même dénomination dans la table mère et la table fille. Dans ton cas, nous avons L.IdLarge et C.IdCar.

    Pour toute documentation complémentaire, tu peux aller sur cette page http://sqlpro.developpez.com/cours/sqlaz/jointures/

    A+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 256
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    Et merci beaucoup.

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

Discussions similaires

  1. Réponses: 19
    Dernier message: 27/08/2003, 15h32
  2. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33
  3. Problème de requètes concurentes
    Par Emmanuel.G dans le forum XMLRAD
    Réponses: 3
    Dernier message: 08/08/2003, 16h51
  4. Réponses: 2
    Dernier message: 16/07/2003, 14h40
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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