Предложение GROUP BY или использоваться в статистической функции - PullRequest
0 голосов
/ 16 мая 2018

Я хочу сгруппировать по sender_id, но я получаю следующую ошибку:

столбец «users.first_name» должен присутствовать в предложении GROUP BY или использоваться в статистической функции

SELECT users.first_name, users.last_name, users.avatar_url, users.age, chatting.content, chatting.sender_id, chatting.received_id, chatting.created_at as created_at_chatting
FROM users, chatting 
WHERE chatting.received_id = users.id 
  AND received_id='4' 
GROUP BY chatting.sender_id

tb_chatting

chatting_id | content | received_id | sender_id 
1           | hallo   | 4           | 5
2           | whoaa   | 4           | 6
3           | wow     | 4           | 5

tb_users

user_id | first_name  | last_name | age | avatar_url 
5       | dicky       | perdian   | 12  | httpxxxxxxx
6       | ferda       | est       | 13  | httpsxxxxxx

Ожидаемый результат:

avatar_url | first_name | last_name | content 
httpxxxxxxx| dicky      | perdian   | hallo 
httpsxxxxxx| ferda      | est       | whoaa

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Проблема в том, что вы пытаетесь использовать функцию Group By без агрегатной функции, такой как count или sum. в этом случае Group By не будет работать. Но чтобы показать простой пример, это было бы похоже на

select users.first_name, users.last_name, users.avatar_url, users.age,
count(chatting.content)`--If that field contains messages count is good enough
FROM users
  join chatting c on c.senderid = users.id -- if it exists
WHERE chatting.received_id = users.id AND received_id='4'
GROUP BY users.first_name, users.last_name, users.avatar_url, users.age

Также я бы рекомендовал не использовать другую таблицу в 'from', потому что если у вас нет соединения между ними, у вас просто будет таблица со всеми полями этих двух таблиц и без реальной корреляции между данными.

Я бы порекомендовал вам узнать, как построить схему базы данных, которая даст вам лучшее представление о том, как создаются таблицы, чтобы вы могли написать первоклассный запрос!

0 голосов
/ 16 мая 2018

По сути, вам нужно включить каждый столбец, выбранный в вашей группе, в правильном порядке.

Например:

SELECT users.first_name, 
       users.last_name, 
       users.avatar_url, 
       users.age, 
       chatting.content, 
       chatting.sender_id, 
       chatting.received_id, 
       chatting.created_at as created_at_chatting
FROM users, chatting 
WHERE chatting.received_id = users.id 
  AND received_id='4' 
GROUP BY 
       chatting.sender_id,
       users.first_name, 
       users.last_name, 
       users.avatar_url, 
       users.age, 
       chatting.content, 
       chatting.received_id, 
       chatting.created_at
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...