mysql - SQL Query involving aggregate functions -
i having issues writing query. dont know if should use count because returns actual count , want return people havent done review. anyway here query trying write.
find users haven’t reviewed businesses.
the tables using are
reviews; +-------------+---------+------+-----+---------+-------+ | field | type | null | key | default | | +-------------+---------+------+-----+---------+-------+ | business_id | int(11) | no | pri | null | | | user_id | int(11) | no | pri | null | | | review_id | int(11) | no | pri | null | | | review_date | date | yes | | null | | | star_rating | int(1) | yes | | 1 | businesses +--------------+--------------+------+-----+---------+-------+ | field | type | null | key | default | | +--------------+--------------+------+-----+---------+-------+ | business_id | int(11) | no | pri | null | | | name | varchar(50) | yes | | null | | | city | varchar(40) | yes | | null | | | state | varchar(20) | yes | | null | | | full_address | varchar(120) | yes | | null | | users; +------------+-------------+------+-----+---------+-------+ | field | type | null | key | default | | +------------+-------------+------+-----+---------+-------+ | user_id | int(11) | no | pri | null | | | name | varchar(50) | yes | | null | | | user_since | date | yes | | null
here have far
select reviews.user_id reviews join businesses on (reviews.business_id = businesses.business_id) group reviews.user_id asc having count(*) > 0;
this returns 0 results , dont think right because can user , not write review. dont know else could. thanks
edit: figured out last query trying complete one!
find users have reviewed every business.
you want users table not business table.
by left joining reviews table users table saying - me users , if haven't left review leave columns nulls. in clause, selecting results review columns nulls, thereby selecting users haven't left review.
select u.user_id users u left join reviews r on r.user_id = u.user_id r.review_id null
Comments
Post a Comment