[MYSQL] Une sorte de "OR JOIN" ?

Nouveau WRInaute
Bonjour,

J'ai enfin réussi à faire la requête que je voulais avec la nouvelle syntaxe. Seulement, j'ai besoin d'exécuter le deuxième JOIN si le premier a échoué. Plus simplement rajouter OR devant.

Code:
SELECT posts.* FROM posts
JOIN users_follows
ON users_follows.follower_id = '.get_session().' AND users_follows.followed_id = posts.user_id AND users_follows.active = 1
JOIN tags_follows
ON tags_follows.follower_id = '.get_session().' AND posts.tags LIKE tags_follows.tag_name AND tags_follows.active = 1
WHERE posts.del = 0

Malheureusement, après mes recherches et essais, je n'ai rien trouvé. J'ai essayé avec LEFT devant mais rien n'y fait.

Pouvez-vous m'aider ?

Merci
 
WRInaute accro
1. Transformer chacun des JOINs en LEFT JOIN
2. ajouter une condition dans le where qui vérifier que l'un ou l'autre des LEFT JOINs a fonctionné:
AND (users_follows.follower_id IS NOT NULL OR tags_follows.follower_id IS NOT NULL)
par exemple.

Le fait d'utiliser les LEFT JOINS fait que le SELECT renverra au moins une ligne pour chaque ligne de posts, complétée par les colonnes correspondantes de users_follows et tags_follows s'il y en a (elles seront NULL sinon). Ensuite le filtre dans le WHERE permet de s'assurer qu'au moins un des deux LEFT JOINs a bien trouvé un résultat.

Jacques.
 
Discussions similaires
Haut