2015-10-09 4 views
0

Моя база данных имеет следующие таблицы.Запрос MYSQL для поиска количества услуг, рассмотренных

services 

+----+----------+ 

| id |serviceID | 

+----+----------+ 

reviews 

+----+----------+-----------+ 

| id | reviewID | serviceID | 

+----+----------+-----------+ 

эти ссылки вместе на serviceID.

Теперь я хочу получить объем услуг, которые были рассмотрены.

Так может быть как 5000 отзывов, но все те обзоры, где на 13 сервисах, например.

Как я могу достичь этого в MYSQL?

ответ

0

Я полагаю, вы хотите получить, сколько различных услуг было рассмотрено.

SELECT COUNT(*) FROM reviews GROUP BY serviceID 
+0

Я хочу всего –

+0

С помощью этого запроса вы получите, сколько услуг было просмотрено в общей сложности. Если у вас есть 3 службы A, B и C и A не получили никаких обзоров, B получил 35 обзоров, а C получил 70 обзоров, этот запрос вернет 2. – viktor77

0

Выполнение select count(*) на reviews, сгруппированные по serviceID должны дать вам, что:

SELECT count(*), serviceID 
FROM reviews 
GROUP BY serviceID 

Это даст вам, как много обзоров вы имели для каждой службы.

2

Общий объем услуг пересматривается:

SELECT count(distinct serviceID) FROM reviews 
+0

спасибо, большое спасибо, знаете ли вы, как я мог получить эту сумму на основе заявление. смысл подсчитывает их из отзывов, где отзывы, где 'created_at' между двумя датами? –

+1

Просто добавьте WHERE created_at> '' AND created_at <'' условие для этого запроса. –

+0

@skorchakov, но нет столбца 'created_at' в соответствии с приведенной схемой базы данных ;-) :-) – Alex

0

Если я вас правильно понимаю, что вам нужно количество услуг, которые имеют по крайней мере один отзыв. Чтобы найти его, вы можете использовать этот код:

select count(*) from services s 
where EXISTS 
select * from reviews r where r.serviceID = s.serviceID 
Смежные вопросы