получить тот же столбец с несколькими критериями в SQL

0

У меня есть таблица a, которая хранит created_by и updated_by, в то время как оба они просто сохраняют user_id, в то время как у меня есть таблица b, которая хранит user_id и имя_пользователя. Кажется, я не могу получить тот же столбец с двумя разными критериями. У меня есть два sql, но как их объединить

SELECT b.user_name FROM a.created_by WHERE b.created_by = a.user_id
SELECT b.user_name FROM a.updated_by WHERE b.updated_by = a.user_id
  • 0
    посмотрите, что такое join stackoverflow.com/questions/38549/… и действительно прочитайте простое проклятие sql, потому что ни один из ваших запросов не подходит. Вы не можете прочитать из поля FROM a.created_by
Теги:
database

3 ответа

0

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

SELECT b.user_name 
FROM a 
     join b on (a.user_id=b.created_by or  a.user_id=b.updated_by)
0

Вы можете присоединиться к таблицам:

select 
   cb.user_name as createdBy,
   ub.user_name as updatedBy
from 
  a
 left join b cb on a.created_by = cb.user_id
 left join b ub on a.updated_by = ub.user_id

MySQL скрипка

вы можете использовать inner join вместо left join... не уверены в ваших требованиях.

  • 1
    ОП вопрос неясен, то, возможно, первое соединение должно быть внутренним, а второе - левым. Некоторые конструкции содержат updated также для вставки. Но хранение информации о записи, измененной пользователем, не очень хороший дизайн, лучше audit tables
0

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

SELECT u.user_name createdBy, v.user_name changedBy
FROM tablea t 
INNER JOIN tableb u ON u.user_id=t.created_by
INNER JOIN tableb v ON v.user_id=t.changed_by

Ещё вопросы

Сообщество Overcoder
Наверх
Меню