Your Query is incorrect. To retrive meta values for triple meta_key you will need 3 different joins using posts meta on posts table.
Check code below:
// Example value
$user_id = 1;
// Calculate average post rating for user
$ratings_query = $wpdb->get_results(
$wpdb->prepare("
SELECT pmeta.meta_value
FROM wp_posts
LEFT JOIN $wpdb->postmeta AS pmeta
ON (pmeta.post_id = $wpdb->posts.id)
LEFT JOIN $wpdb->postmeta AS pmeta1
ON (pmeta1.post_id = $wpdb->posts.id)
LEFT JOIN $wpdb->postmeta AS pmeta2
ON (pmeta2.post_id = $wpdb->posts.id)
WHERE $wpdb->posts.post_author = %d AND
$wpdb->posts.post_type="post" AND
$wpdb->posts.post_status="publish"
AND (
pmeta.meta_key = 'rating'
AND CAST(pmeta.meta_value AS CHAR) != '0'
)
AND (
pmeta1.meta_key = 'anonymous'
AND CAST(pmeta1.meta_value AS CHAR) != 'true'
)
AND (
pmeta2.meta_key = 'original_author'
AND CAST(pmeta2.meta_value AS CHAR) = ''
)", $user_id), ARRAY_N);
To retrive meta data using custom query, you will need 1 joins for each meta data pairs on posts table as above.
if you print last SQL query using code echo $wpdb->last_query;
, you will get SQL query:
SELECT
pmeta.meta_value
FROM
wp_posts
LEFT JOIN wp_postmeta AS pmeta
ON (pmeta.post_id = wp_posts.id)
LEFT JOIN wp_postmeta AS pmeta1
ON (pmeta1.post_id = wp_posts.id)
LEFT JOIN wp_postmeta AS pmeta2
ON (pmeta2.post_id = wp_posts.id)
WHERE wp_posts.post_author = 1
AND wp_posts.post_type="post"
AND wp_posts.post_status="publish"
AND (
pmeta.meta_key = 'rating'
AND CAST(pmeta.meta_value AS CHAR) != '0'
)
AND (
pmeta1.meta_key = 'anonymous'
AND CAST(pmeta1.meta_value AS CHAR) != 'true'
)
AND (
pmeta2.meta_key = 'original_author'
AND CAST(pmeta2.meta_value AS CHAR) = ''
)