You just need to join postmeta twice:
global $wpdb, $bp;
$user_id = get_current_user_id();
$query = $wpdb->prepare(
"SELECT
rel.post_id as id,
rel2.meta_value as val
FROM {$wpdb->posts} AS posts
LEFT JOIN {$wpdb->postmeta} AS rel ON
posts.ID = rel.post_id
LEFT JOIN {$wpdb->postmeta} AS rel2 ON
posts.ID = rel2.post_id
WHERE
posts.post_type="books" AND
posts.post_title LIKE '%%fire' AND
posts.post_status="publish" AND
rel.meta_key = 'books_id' AND
rel.meta_value="1351" AND
rel2.meta_key = %d AND
rel2.meta_value > 0",
$user_id
);
$values = $wpdb->get_results( $query );
Also note that I used $wpdb->prepare()
in place of sprintf()
. It’s the preferred method for safely putting values into a query with WordPress.