Désolé, je ne me souviens pas trop de la syntaxe SQL de MySQL, mais une jointure externe sur la table lecture devrait marcher, i.e. si la valeur ramenée de ta table lecture est null, l’utilisateur n’a pas lu l’article
Il faut un jointure ouverte, left join ou right join, et même si lecture.user_id n’existe pas, ça te renverra l’élément. cette jointure ouverte s’écrit bien (+) dans Oracle comme le fait [myself]
euh, j’suis pas sur d’avoir bien compris la question, donc je vais résumer ce que j’ai compris :ane:
tu veux afficher xx articles et afficher differement les articles déjà lu (ou non lu, ça revient au même) en fonction de l’utilisateur ? c’bien ça ? et tu ne veux pas faire une requète par article (c’est bien ça :D)
parce que bon, je vois pas où est la difficulté :neutre: …
1/ tu select les xx articles à afficher
2/ tu select les id des articles lus par l’utilisateur, en limitant les articles à ceux sélectionner plus haut
3/ dans ta boucle qui va lire chacun des articles retourner par 1/, tu regardes si l’id se trouve dans la liste de la requète retourner par 2/ … et tu ensuite tu fais ton traitement en fonction de si c’est lu ou pas lu …
plus simple, je pense t’auras du mal … là ça fait 2 requètes, et je vois pas comment tu pourrais tout faire en une
quoique …
si tu fais une jointure sur une table, et qu’il n’y a pas d’enregistrement correspondant, alors le champ auras la valeur NULL … donc si tu fais une jointure entre ta table article, et ta table article_lu, et que l’utilisateur n’as pas lu l’article, alors tu auras une valeur NULL :oui: … mais j’ai peur que ça ne select que les articles lus par un user à partir du moment où tu fais un where sur l’id_user :neutre: …
Pour l’instant j’ai un truc dans le genre, avec un LEFT JOIN.
j’ai ça (pour l’instant les utilisateurs sont des IPs)
SELECT * FROM articles a LEFT JOIN ips i ON i.art_id = a.art_id
WHERE i.ip = ‘127.0.0.1’ OR i.ip IS NULL
ça fonctionne presque bien.
le problème c’est quand on autre utilisateur a lu l’article.
il existe un enregistrement dans la table [i]ips/[i] qui n’est ni 127.0.0.1, ni null. Alors l’article ne s’affiche pas, parce qu’il n’entre pas dans la condition du WHERE.
L’idée à Kiss est pas mal
Mais si quelqu’un a une idée pour une seule requete, ça serait cool