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 :

Modifié les conditions WHERE selon la valeur d'une requête


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 2
    Par défaut Modifié les conditions WHERE selon la valeur d'une requête
    Bonjour,
    Actuellement j'utilise deux requêtes MySQL et une jonction de l'une par l'autre grâce au php et je voudrai simplifier la chose en fesant une seul et unique requête MySQL.

    ma requête de 'base'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT t.topic_id, t.topic_title , t.forum_id , t.topic_poster, t.topic_tag_id , u.user_colour, u.user_id , u.username
    FROM `phpbb3_topics` t , `phpbb3_users` u 
    WHERE u.user_id = t.topic_poster
    AND t.forum_id = '9'
    ORDER BY t.topic_title ASC
    avec la gestion de la table tag :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT t.topic_id, t.topic_title , tg.topic_tag_id, tg.topic_tag_name, t.forum_id , t.topic_poster, t.topic_tag_id , u.user_colour, u.user_id , u.username 
    FROM `phpbb3_topics` t , `phpbb3_topic_tags` tg , `phpbb3_users` u 
    WHERE u.user_id = t.topic_poster 
    AND t.forum_id = '9'
    AND tg.topic_tag_id = t.topic_tag_id 
    ORDER BY t.topic_title ASC
    Mais le problème, tout les topic sans tag (t.topic_tag_id valeur NULL) sont éjectés de la requête, et étant donné que le tg.topic_tag_id est en incrémentation je ne peux pas fait un insert bidon de valeur null.

    j'ai essayer un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT t.topic_id, t.topic_title , tg.topic_tag_id, tg.topic_tag_name, t.forum_id , t.topic_poster, t.topic_tag_id , u.user_colour, u.user_id , u.username 
    FROM `phpbb3_topics` t , `phpbb3_topic_tags` tg , `phpbb3_users` u 
    WHERE u.user_id = t.topic_poster 
    AND t.forum_id = '9'
    AND 
    (IF t.topic_tag_id = NULL 
    THEN tg.topic_tag_id = '18' 
    ELSE tg.topic_tag_id = t.topic_tag_id) 
    ORDER BY t.topic_title ASC
    mais bon j'ai une erreur j'ai cru comprendre que ce genre de IF THEN s'applique dans le SELECT et pas dans le WHERE donc ben si quelqu'un a une solution a mon problème je suis prôneur
    Sur ce bonne journée.

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    salut,

    essaie comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT t.topic_id, t.topic_title , tg.topic_tag_id, tg.topic_tag_name, t.forum_id , t.topic_poster, t.topic_tag_id , u.user_colour, u.user_id , u.username 
    FROM `phpbb3_topics` t 
    JOIN `phpbb3_users` u ON u.user_id = t.topic_poster 
    LEFT JOIN `phpbb3_topic_tags` tg  ON  t.topic_tag_id = tg.topic_tag_id 
    WHERE t.forum_id = '9'
    ORDER BY t.topic_title ASC

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 2
    Par défaut
    Sa marche merci bien

    juste pour comprendre, le left join permet de faire une sélection WHERE sans que celle ci soit obligatoire? va falloir que je me mette au méthode JOIN

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    voila un petit peu de lecture si cela t'intéresse : http://sqlpro.developpez.com/cours/sqlaz/jointures/

    La partie jointure externe devrait t'intéresser particulièrement

    A+

    Michel

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/10/2012, 16h44
  2. Réponses: 1
    Dernier message: 18/12/2009, 20h43
  3. Modifier les conditions de fermeture d'un JPopupMenu
    Par Abission dans le forum Composants
    Réponses: 2
    Dernier message: 04/06/2009, 15h15
  4. numéroter les lignes ayant la même valeur dans une requête
    Par raiamanu dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 12/10/2007, 10h49
  5. Réponses: 7
    Dernier message: 22/05/2007, 15h35

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