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

SQL Oracle Discussion :

Raccourcir une requête à l'aide de JOIN


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 2
    Par défaut Raccourcir une requête à l'aide de JOIN
    Bonjour à tous,

    Je vous explique mon problème :

    En gros, je dois sommer les paiements reçus d'un locataire particulier et effectuer cette commande sur tous les locataires d'un immeuble.

    J'ai d'abord pensé à coder cette requête comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * FROM PERSONNE  ORDER BY NOM
    SELECT ID_DEMANDE FROM DEMANDE_LOGEMENT WHERE ID_FICHE ='2000CP560'
    SELECT ID_LOCATION FROM LOCATION WHERE ( ID_DEMANDE = '4'  OR ID_DEMANDE = '5' )
    SELECT SUM(MONTANT) FROM PAIEMENT WHERE (  ID_LOCATION = '2000CP5600'  )
    Le problème est qu'il me faut 3 requête pour avoir accès d'abord à l'ID_DEMANDE puis à l'ID_LOCATION pour seulement après sommer les paiements liés.

    Comment pourrais-je faire pour raccourcir cette requête sachant que l'id qui m'intéresse est celui du locataire...

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Par défaut
    Serait-il possible de connaître la structure des tables? Car ici on voit bien qu'il y a 4 tables PERSONNE, DEMANDE_LOGEMENT, LOCATION, et PAIEMENT, mais on ne sait pas trop qui relie quoi..

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2010
    Messages : 2
    Par défaut
    La table DEMANDE_LOGEMENT dispose de la clé primaire ID_DEMANDE grâce à laquelle on peut lier la table LOCATION.

    De là on dispose alors de l'ID_LOCATION clé primaire de la table LOCATION qui permet à son tour d'accéder à la table PAIEMENT.

    La table PERSONNE a pour clé primaire ID_FICHE et donc en gros, ce que j'aimerais obtenir c'est une requête qui exécute la même chose que celle que j'ai noté dans le premier post mais en une seule requête si possible.

    Merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 134
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT SUM(Montant) FROM Paiement
    INNER JOIN Location ON Paiement.Id_location=Location.Id_location
    INNER JOIN Demande_Logement ON Location.Id_demande=Demande_Logement.Id_demande
    INNER JOIN Personne ON Demande_logement.Id_fiche=Personne.Id_fiche
    WHERE ID_FICHE ='2000CP560' 
    AND ID_LOCATION = '2000CP5600' 
    AND ID_DEMANDE = '4' OR ID_DEMANDE = '5';
    Voilà ce que je ferais. Après je ne suis pas sûr du résultat que tu attend, étant donné le nombre de condition assez importantes (beaucoup de "AND" dans tes requêtes selon moi, mais bon..).

    Mais vu que tu veux les paiements d'un locataire en particulier, j'aurais remplacé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    WHERE ID_FICHE ='2000CP560' 
    AND ID_LOCATION = '2000CP5600' 
    AND ID_DEMANDE = '4' OR ID_DEMANDE = '5';
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE ID_FICHE ='2000CP560'
    J'espère que ça t'aidera un peu

Discussions similaires

  1. [WD12] Erreur dans une Requête avec plusieurs INNER JOIN
    Par Raphael1980 dans le forum WinDev
    Réponses: 3
    Dernier message: 12/06/2009, 15h22
  2. Trier les résultats d'une requête à l'aide d'un listbox
    Par magoo33 dans le forum Coldfusion
    Réponses: 2
    Dernier message: 17/11/2008, 22h27
  3. [Access] Problème dans une requête SQL avec INNER JOIN ?
    Par bds2006 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/06/2006, 10h57
  4. [SQL] Requête dans une requête...avec des INNER JOIN!
    Par PedroBD dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 06/04/2006, 08h26
  5. une requête avec plusieurs INNER JOIN, cmt faire ?
    Par elhosni dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/01/2006, 17h55

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