Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

PHP

CODE CHALLENGE Grouping, Joining and Cleaning , Calculating AVG MYSQL

Like before, select the average "score" as "average", setting to 0 if null, by grouping the "movie_id" from the "reviews" table. Also, do an outer join on the "movies" table with its "id" column and display the movie "title" before the "average". Finally, filter out any "average" score over 2.

I have been stuck on this one for a while I cant seem to figure it out

I have tried

SELECT title,IFNULL(AVG(score),0 AS average)
FROM movies LEFT OUTER JOIN reviews
ON movies.id = reviews.movie_id
GROUP BY movie_id HAVING average < 2;


ALSO




SELECT title,IFNULL(AVG(score),0 AS average)
FROM reviews RIGHT OUTER JOIN movies
ON movies.id = reviews.movie_id
GROUP BY movie_id HAVING average < 2;

Also a lot of variations in between I have a feeling it might be something with the syntax? Any help would be great

1 Answer

You've categorized this under PHP so I'm assuming that this is for the PHP/SQL unit (I haven't completed) and not just the SQL unit...anyway...running this in workbench gives a valid answer...not sure how your columns are setup.

SELECT title,IFNULL(AVG(score),0) AS Average
FROM movies LEFT OUTER JOIN reviews
ON movies.id = reviews.movie_id
GROUP BY movie_id HAVING average < 2;

Thank you JT! It was a syntax error i was overlooking if you look at my code about I have the AS keyword creating the alias inside the IFNULL parameters.