Well, first of all, you use where post_status="publish"
. So you wouldnt need to explicitly tell the drafts not to show up by using wp_posts.post_status != 'draft'
I think, your SQL says somthing like:
Grab all posts which are published and not drafted and attached to
term_id 17 OR grab all posts which are attached to term_id 18
OR grab all posts which are attached to term_id 19.
So you should use some brackets to say something like
Grab all posts which are published and either attached to term_id 17 or term_id 18 or
term_id 19
Try this:
SELECT
*
FROM
wp_posts
LEFT JOIN
wp_term_relationships ON (
wp_posts.ID = wp_term_relationships.object_id
)
LEFT JOIN
wp_term_taxonomy ON (
wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id
)
WHERE (
wp_posts.post_type="post" AND
wp_posts.post_status="publish" AND
(
wp_term_taxonomy.term_id = 17 OR wp_term_taxonomy.term_id = 18 OR wp_term_taxonomy.term_id = 19
)
)
ORDER BY
post_date_gmt DESC
LIMIT 6
OFFSET 6