Как я могу получить значение столбца, объединяющее то же значение таблицы

#mysql

#mysql

Вопрос:

Пользователи

user_types 1 = администратор 2 = дистрибьютор 3 = розничный торговец


     user_id | user_name| user_type| user_under|
    ---------------------------------------------------------------------------
     1      | user1    | 1        | 0      
     2      | user2    | 3        | 2  
     3      | user3    | 2        | 0
     4      | user4    | 3        | 2
     5      | user5    | 3        | 2
 

пополнение


     rech_id | user_id| amount| 
    ---------------------------------------------------------------------------
     1      | 2    | 249
     2      | 4    | 495
     3      | 5    | 175
 

желаемый результат


     rech_id | user_id| user_under| 
    ---------------------------------------------------------------------------
     1      | 2    | user3           
     2      | 4    | user3
     3      | 5    | user3
 

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

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

1. Что вы пробовали? покажите нам свой код

2. Ваш вопрос неясен, и ваши усилия также

Ответ №1:

Как вы можете видеть, в таблице вывода вам нужны только те user_id, которые присутствуют как в users, так и в recharge, поэтому примените внутреннее соединение. Далее,

  1. rech_id может быть извлечен из таблицы пополнения счета
  2. идентификатор пользователя может быть получен либо из таблицы пользователей, либо из таблицы пополнения.
  3. для user_type в wanted_result есть шаблон, т. е. Комбинация ключевого слова «user» с user_type таблицы users. поэтому используйте concat(«user»,user_type)
 select re.rech_id,re.user_id,concat("user",us.user_type) as user_under
    from users us inner join recharge re USING (user_id)
 

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

1. Предполагая, что ваш запрос выполняет именно то, что было задано (я не могу попробовать), другим было бы неплохо, если бы вы добавили некоторые пояснения, чтобы понять, что происходит и почему это работает.

Ответ №2:

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

   select rech_id,user_id,user_under from users INNER JOIN recharge ON users.user_id=recharge.user_id;
 

Ответ №3:

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

 SELECT * FROM users AS u INNER JOIN recharge AS r on r.user_id = u.user_id
GROUP BY u.user_name;
 

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

1. SELECT * ... GROUP BY u.user_name является ли 99% случаев недействительным SQL .. Это не то, как вы обычно должны использовать GROUP BY в SQL, если в столбце не может использоваться функционально зависимый u.user_name