ma requête:mysql résultat de filtrage à l'aide rejoindre externe gauche
SELECT content.*, activity_log.content_id FROM content
LEFT JOIN activity_log
ON content.id = activity_log.content_id
AND sess_id = '$sess_id'
WHERE activity_log.content_id IS NULL
AND visibility = $visibility
AND content.reported < ".REPORTED_LIMIT."
AND content.file_ready = 1
LIMIT 1
Le but de cette requête est d'obtenir 1 ligne de la table de contenu qui n'a pas été vu par l'utilisateur (identifié par session_id), mais renvoie toujours le contenu qui a été consulté. Qu'est-ce qui ne va pas? (J'ai vérifié la table en vous assurant que les content_ids sont là)
Note: Je pense que cela est plus efficace que d'utiliser des sous-requêtes pensées?
Oui, MySQL (atleast 5.0 et ci-dessous), cela est plus efficace que d'utiliser les sous-requêtes. Je ne vois pas pourquoi la requête ne fonctionne pas bien. – Wolph
Quel est le point de retour 'activity_log.content_id' dans le SELECT lorsque vous avez dit dans la clause WHERE qu'il doit être NULL? –
Si 'activity_log.content_id' est nul? – Thomas