2013-07-26 2 views
0

У меня есть две таблицы:MySQL усреднением присоединился таблицу

salon_ranks:

+-----------+-----------+-----------+-----------+ 
| salon_id |category_id| user_id | rank | 
+-----------+-----------+-----------+-----------+ 
|  10 |   1 |  999 |  1 | 
|  10 |   2 |  999 |  1 | 
|  10 |   1 |  888 |  5 | 
|  10 |   2 |  888 |  5 | 
+-----------+-----------+-----------+-----------+ 

categories:

+------+-----------+ 
| id | name | 
+------+-----------+ 
| 1 | prices | 
| 2 | service | 
+------+-----------+ 

Я пытаюсь эффективно получить что-то, что выглядит следующим образом:

+-----------+-----------+-----------+ 
| salon_id |category_id| AVG(rank) | 
+-----------+-----------+-----------+ 
|  10 |   1 |  3 | 
|  10 |   2 |  3 | 
+-----------+-----------+-----------+ 

Что сделал больше смысла для меня это вопрос так:

SELECT salon_id, category_id, AVG(rank) 
FROM salon_ranks 
INNER JOIN categories ON category_id = id 
GROUP BY salon_id, category_id 

Но по какой-то причине я не получаю среднее, но получить вместо этого:

+-----------+-----------+-----------+ 
| salon_id |category_id| AVG(rank) | 
+-----------+-----------+-----------+ 
|  10 |   1 |  1 | 
|  10 |   2 |  5 | 
+-----------+-----------+-----------+ 

Любая идея для почему это произойдет? И какой может быть правильный запрос?


Извините, это была моя ошибка. Я неправильно понял данные из моих исходных таблиц. Действительно извините за вводящие в заблуждение вас :(

+3

он должен дать тыс правильное значение. http://www.sqlfiddle.com/#!2/ee5c6/1 –

+4

Должно быть, вы не показываете нам, потому что ваш запрос в порядке. Мы не можем ответить, если вы не дадите нам действительный вопрос. – Barmar

ответ

2

Теперь мы знаем ваш запрос работает нормально. Но это хорошая практика, чтобы использовать псевдонимы для таблиц. Это не обязательно для вашего случая, но это делает ваш запрос более читаемым и масштабируемым.

SELECT SR.salon_id, SR.category_id, AVG(SR.rank) 
FROM salon_ranks SR 
INNER JOIN categories C ON SR.category_id = C.id 
GROUP BY SR.salon_id, SR.category_id 
+1

Псевдонимы нужны только в случае наличия неоднозначных столбцов, и в этом случае исходный запрос сообщил об ошибке. – Barmar

+0

@Barmar Я не нашел причины, по которой запрос OP возвращает неправильный результат. Итак, псевдонимы - единственное, что я могу ему предложить. – Parado

+1

Мы ожидаем, что программирование культа на кусочках от респондентов, ответчики должны знать лучше. – Barmar

Смежные вопросы