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

Requêtes MySQL Discussion :

Jointure qui doit me retrouner un résultat même si il y en a pas !


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 41
    Points
    41
    Par défaut Jointure qui doit me retrouner un résultat même si il y en a pas !
    Salut,

    je l'admet, le titre est pas clair, je vais expliquer.


    J'ai une table LOCATAIRE, avec un id.
    J'ai une table ECHEANCE avec un id.
    J'ai une table paiement_echeance, avec id, id_echeance, id_locataire.

    J'aimerai avoir une liste de toutes les échéances et savoir si le locataire a payé ou pas.

    Pour ça, il faut que la requête me retourne quelque chose ( -1 par exemple) pour une échéance qui n a pas étée payée, et donc qui n est pas dans paiemen_echeance

    Merci de votre aide

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Il te faut une jointure externe (cf lien dans ma signature)
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    je ny arrive pas, j avais déjà essayé en effet, je sais pas sur quoi fait le LEFT OUTER JOIN

    merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    Ca y est !

    Super doc !

    Voici ma requête si ça peut aider quelqu'un un jour :

    SELECT echeances.date, pe.id
    FROM echeances
    LEFT OUTER JOIN paiement_echeances pe
    ON echeances.id = pe.id_echeance

  5. #5
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Il faudrait au moins que tu donne un squellette de requête... histoire de pouvoir travailler dessus... donne par exemple la requête qui fonctionne sauf pour les impayés
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    Finalement c'est pas bon

    J ai besoin de rajouter une condition, à savoir paiement_echeance.id_locataire=10 par exemple.

    Je fais :

    SELECT echeances.date, pe.id
    FROM echeances
    LEFT OUTER JOIN paiement_echeances pe
    ON echeances.id = pe.id_echeance
    WHERE paiement_echeances.id_locataire=10

    et là il me retourne aucune ligne, il retourne juste des lignes si le locataire a une ligne dans paiement_echeance !

    Merci de votre aide

  7. #7
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    essaie ceci alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT echeances.date, pe.id
    FROM echeances
    LEFT OUTER JOIN paiement_echeances pe
    ON echeances.id = pe.id_echeance
    WHERE paiement_echeances.id_locataire=10 OR paiement_echeances.id_locataire IS NULL
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    Toujours pas.

    La avec ta requète il ne me retourne pas les lignes qui ont étées payées par quelqu'un d autre !

    Par exemple, si locataire id=1 a payé le mois de mai, donc a une ligne dans paiement_echeance, et bien quands je fais la requete pour locataire id=2, il ne me retourne pas la ligne du mois de juin Alors qu'il devrait me la retourner, avec un paiement_echeance.id à NULL bien entendu car il a rien payé

    Je vais jamais y arriver

  9. #9
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    je comprends carrément plus où tu veux en venir...

    tu peux expliquer clairement ce que tu veux s'il te plaît ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    Je veux obtenir ça en fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    id_locataire   echeance     id_paiement    
    1                 04-2006      12                   (donc a bien payé le moi d'avril)
    1                 05-2006      54                   (donc a bien payé le moi de Mai)
    1                 06-2006      NULL                (n'a pas payé le mois de Juin)
    Voilà ce que je veux obtenir

    Pour la colonne echeance, l'id de l'échéance me suffit, mais là j'ai mis xx-2006 pour que ce soit plus compréhensible

    Merci

  11. #11
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    et comment tu fait pour avoir le locataire si tu n'as pas de paiment échéance ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    euh en effet, c'était pour l exemple

    J ai pas besoin de l'obtenir dans le résultat en effet, puisque je le connais, vu qu il doit rentrer dans la requête

    J espère me faire comprendre ...

  13. #13
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    carrément pas désolé...

    ta requête pourrait être réalisable, mais il faudrait plutôt changer un brin ta modélisation :

    il faudra dans paiment échéance ajouter un champ qui précise si c'est payé ou pas...

    ainsi tu aurais locataires : les locataires
    échéances : les échéances (tous les mois)
    paiments : les paiements fait ou à faire par les locataires

    je sais pas si c'est très clair...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    ouais, j y ai pensé évidemment, mais ce qui m mebette dans cette méthode, c'est qu'il faut "générer" une ligne dans paiement pour chaque locataire et chaque échéance.

    Le souci est qu un locataire peut changer, ça complique vraiment les choses, alors que je suis persuadé qu avec une requête on peut arriver à ce que je veux, on y est presque

    Mais je maitrise pas assez là j avoue

  15. #15
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    en fait, j'arrive pas vraiment à voir quel ensemble d'informations tu veux récupérer...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    bah c'est pas compliqué, je veux récupérer une ligne par échéance (mai 2006, Juin 2006, Aout 2006, etc) et à chaque échéance, trouver l'id de la table paiment_echeance si il y a une ligne pour le locataire en question

    Je me fais mal comprendre ?

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    J'ai enfin réussi, la requête était :

    SELECT echeances.date, pe.id
    FROM echeances
    LEFT OUTER JOIN paiement_echeances pe
    ON echeances.id = pe.id_echeance AND pe.id_locataire=7

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

Discussions similaires

  1. Service qui doit se contrôler lui-même
    Par gderenne dans le forum VB.NET
    Réponses: 5
    Dernier message: 29/01/2009, 16h56
  2. requête avec jointure qui renvoie des résultats bizarres
    Par Canari74 dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 20/05/2008, 02h13
  3. Probleme Base qui doit souvent etre réparée.
    Par Le_Phasme dans le forum Access
    Réponses: 3
    Dernier message: 04/11/2005, 15h04
  4. formulaire qui doit appeler plusieurs pages
    Par rohel dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 27/01/2005, 08h59
  5. [SQL] Requête à jointure qui ne fonctionne pas
    Par Bensor dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/12/2004, 16h10

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