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'
avec la gestion de la table tag :
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
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.
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
j'ai essayer un truc du genre :
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
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
Sur ce bonne journée.
Partager