Как отобразить несколько строк в таблице с одной строкой в другой таблице в виде одной строки

#php #mysql #select #sum #group-concat

#php #mysql #выберите #сумма #group-concat

Вопрос:

У меня есть две таблицы. Таблица «user» содержит user_id, имя_пользователя Таблица «Transactions» содержит user_id, транзакции

Например:

 TABLE USER:
user_id, user_name
1, Ram
2, John
3, Rahim

TABLE Transactions
user_id, transactions
1,  500
1, 300
2, 250
1, 450
3, 100
1, 250
3, 50
 

Я хочу отобразить результат как:

 user_name, Total
Ram, 1500*
John, 250
Rahim, 150
 
  • это сумма всех транзакций этого конкретного пользователя

Как я могу это сделать?

Комментарии:

1. В моем вопросе ошибка. Мой результат должен быть: user_id, всего. (Не имя_пользователя, всего) Извините, что смутил вас.

2. Сообщение отредактировано. В любом случае, я думаю, вы получили правильный ответ.

3. Еще раз извините. Прежде чем переписать свой комментарий, я просто нажал клавишу «enter». Мне нужно имя_пользователя, всего (например: Ram, 1500). Пожалуйста, проигнорируйте мой последний комментарий. Еще раз извините за мои ошибки

4. Ну, так что ответ genesis правильный.

5. Большое спасибо! stackoverflow.com СКАЛЫ

Ответ №1:

 SELECT 
    u.user_name, 
    SUM(t.transactions) Total
FROM users u
LEFT JOIN transactions t ON t.user_id = u.user_id
GROUP BY t.user_id
 

Я думаю, вам следует использовать LEFT JOIN, потому что в любом случае он должен выбрать общее значение пользователя (NULL), даже если оно равно 0

Комментарии:

1. Зачем нужно объединение, если все данные, которые нужны пользователю, находятся в одной таблице?

2. Кажется, что, но, как вы можете видеть, в его примере он ввел идентификатор пользователя, а не имя_пользователя. Я тоже в замешательстве.

3. @Aur да, ваш ответ хорош, если он хочет user_id. Мы увидим

4. Спасибо. Я спросил, потому что ваш ответ хорош, и это была моя первая мысль, прежде чем я понял пример.

5. Я знаю, как отображать поля из одной таблицы. Но я неправильно написал свой вопрос. Мне нужно имя_пользователя, всего (например: Ram, 1500).

Ответ №2:

 SELECT u.user_id , SUM(t.transactions) AS total
FROM user AS u JOIN transactions AS t
GROUP BY u.user_id
 

Ответ №3:

Попробуй

 SELECT
    u.user_id,
    sum(t.transactions) as total
FROM
    user u
    JOIN transactions t ON u.user_id = t.user_id
GROUP BY
    u.user_id