Ошибка SQL Anywhere. Ссылка на функцию или столбец с идентификатором также должна отображаться в GROUP BY.

У меня есть 2 таблицы:

test таблица:

Column                           Type                             Nullable Primary Key 
-------------------------------- -------------------------------- -------- ----------- 
id                               integer                                 0           1 
name                             varchar(255)                            1           0 
price                            varchar(255)                            1           0

ряды:

id name price
1  BMW  3000
2  AUDI  2500

test_2 таблица:

Column                           Type                             Nullable Primary Key 
-------------------------------- -------------------------------- -------- ----------- 
id                               integer                                 0           1 
ad_id                            integer                                 1           0 
user_id                          integer                                 1           0 
price                            integer                                 1           0 

ряды:

         id       ad_id     user_id       price 
----------- ----------- ----------- ----------- 
          1           1          23        2000 
          2           1          23        2200 
          3           1          22        2050 

Мне нужно получить этот результат:

BMW 23 2200 
BMW 22 2050

Мой SQL:

SELECT * FROM test, test_2 WHERE test_2.ad_id=test.id GROUP BY user_id ORDER BY test_2.price DESC

но всегда я получаю эту ошибку:

Не удалось выполнить инструкцию.
Ссылка на функцию или столбец с 'id' также должна присутствовать в GROUP BY
SQLCODE=-149, ODBC 3 State="42000"
Строка 1, столбец 1

Я использую SQL Anywhere. Спасибо за любую помощь.


person rev2012    schedule 06.09.2013    source источник


Ответы (1)


Все столбцы в group by должны быть в предложении select, кроме агрегатных функций.

SELECT test.name, test_2.user_id, max(test_2.price)
FROM test, test_2 
WHERE test_2.ad_id=test.id 
GROUP BY test.name, test_2.user_id
ORDER BY test_2.price DESC
person Robert    schedule 06.09.2013
comment
Затем я получаю также BMW 23 2000 года. Мне нужен 1 пользователь = 1 строка - person rev2012; 06.09.2013