У меня возникли проблемы с написанием этого запроса. Я не знаю, действительно ли я должен использовать счет, потому что это возвращает фактический счет, и я хочу вернуть людей, которые не сделали обзор. В любом случае, вот мой запрос, который я пытаюсь написать.SQL-запрос с использованием агрегатных функций
Find those users that haven’t reviewed any businesses.
Таблицы, которые я использую в
reviews;
+-------------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------+------+-----+---------+-------+
| 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 | Extra |
+--------------+--------------+------+-----+---------+-------+
| 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 | Extra |
+------------+-------------+------+-----+---------+-------+
| user_id | int(11) | NO | PRI | NULL | |
| name | varchar(50) | YES | | NULL | |
| user_since | date | YES | | NULL
Вот то, что я до сих пор
SELECT reviews.user_id FROM reviews
JOIN businesses ON (reviews.business_id = businesses.business_id)
GROUP BY reviews.user_id ASC
HAVING COUNT(*) > 0;
Это возвращает 0 результатов, и я не думаю, что это правильно, потому что кто-то может быть пользователя и не писать отзыв. Но я не знаю, что еще мог. Спасибо
EDIT: Я понял, что последний запрос, но теперь я пытаюсь завершить этот!
Find the users that have reviewed every business.
после 'ON' вы имеете' reviews.business_id' дважды. Попробуйте переключить его на 'business.business_id' –
Если ваш EDIT задает другой вопрос, создайте новое сообщение, не добавляйте его к этому. Кроме того, используйте 'SHOW CREATE TABLE', это более описательно, чем' DESCRIBE TABLE'. –