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 :

Requete avec jointure conditionnelle


Sujet :

Requêtes MySQL

  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut Requete avec jointure conditionnelle
    Bonjour à tous,
    je cherche à conditionner un assignation dans une jointure , mais je ne sais pas trop comment m'y prendre.

    J'ai la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT fc.libelle, ft.titre, fc.idCategorie, fc.last_thread_id, fc.last_post_id, fc.nb_msg,ft.lastActivity,
    fl.idThread as idTlu,fl.idPost as idPlu,fl.idUser as idUlu,fl.dateLec,
    u.nom,u.prenom
    FROM `forum_categorie` fc
    	LEFT JOIN forum_lecture fl ON fl.idThread = fc.last_thread_id AND fl.idUser = 1
    	LEFT JOIN forum_thread ft ON fc.last_thread_id = ft.idThread
    	LEFT JOIN forum_post fp ON fp.idPost = fc.last_post_id
    	LEFT JOIN users u ON u.idUser = fp.idUser
    ORDER BY fc.libelle ASC
    Or il se peut que dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LEFT JOIN users u ON u.idUser = fp.idUser
    fp.idUser soit null (si aucune réponse à un thread) et donc je souhaiterais à la place utiliser ft.idUser.
    En parcourant le forum je suis tomber sur l'utilisation de CASE WHEN. J'ai tester ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LEFT JOIN users u ON CASE WHEN(fp.idUser IS NOT NULL) THEN u.idUser = fp.idUser ELSE u.idUser = ft.idUser
    Mais sans succès, il y'a sans doute quelque chose qui m'échappe.

    Une idée ?

    Merci

    PS : je suis en mysql 5.1.31
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    peut-etre simplement avec un OR

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LEFT JOIN users u ON u.idUser = fp.idUser OR u.idUser = ft.idUser
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut
    En fait je viens de trouver. Me manquais un bout de la Synthaxe
    CASE WHEN
    THEN
    ELSE
    END


    Et là ca marche parfaitement.

    Merci
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. requetes avec jointures conditionnelles
    Par danytro dans le forum Requêtes
    Réponses: 2
    Dernier message: 03/09/2012, 11h35
  2. pb requete avec jointure ( conditionnelle !?!)
    Par raspout81 dans le forum Requêtes
    Réponses: 5
    Dernier message: 12/07/2007, 21h33
  3. recherche aide pour requete avec jointure
    Par nebil dans le forum Requêtes
    Réponses: 5
    Dernier message: 21/08/2006, 17h03
  4. [MySQL] Erreur dans une requête avec jointures
    Par bobic dans le forum Langage SQL
    Réponses: 17
    Dernier message: 03/08/2006, 13h04
  5. requete avec jointure & group by
    Par de LANFRANCHI dans le forum Langage SQL
    Réponses: 9
    Dernier message: 27/07/2004, 14h31

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