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

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

gradle error "Cannot convert the provided notation to a File or URI" -

[C++][SFML 2.2] Strange Performance Issues - Moving Mouse Lowers CPU Usage -