userPosts.value can contain one of two values: 0 or 1.
I left joining userPosts to my message table.
I want to get all posts from my Posts table, where userPosts.value = 0, as well as all posts that have no userPosts.value at all (thus NULL).
The following are only messages where value = 0 but not NULL:
SELECT * FROM $wpdb->posts LEFT JOIN userPosts ON ($wpdb->posts.ID = userPosts.postID) WHERE userPosts.value != 1 ORDER BY $wpdb->posts.post_date DESC
The following messages only receive messages where value = NULL:
SELECT * FROM $wpdb->posts LEFT JOIN userPosts ON ($wpdb->posts.ID = userPosts.postID) WHERE userPosts.value IS NULL ORDER BY $wpdb->posts.post_date DESC
but this gives no results:
SELECT * FROM $wpdb->posts LEFT JOIN userPosts ON ($wpdb->posts.ID = userPosts.postID) WHERE userPosts.value = 0 AND userPosts.value IS NULL ORDER BY $wpdb->posts.post_date DESC
and this calls my messages with value = 0, as well as NULL, but all my NULL messages are repeated three times!
SELECT * FROM $wpdb->posts LEFT JOIN userPosts ON ($wpdb->posts.ID = userPosts.postID) WHERE userPosts.value = 0 OR userPosts.value IS NULL ORDER BY $wpdb->posts.post_date DESC
So what am I doing wrong?
Sweepster
source share