SQL, сравнивающий две таблицы с общим идентификатором, но идентификатор в таблице 2 может находиться в двух разных столбцах

#sql

#sql

Вопрос:

Учитывая следующие таблицы SQL:

Администраторы:

 id  Name   rating
 1  Jeff      48
 2  Albert    55
 3  Ken       35
 4  France    56
 5  Samantha  52
 6  Jeff      50
  

Собрания:

 id   originatorid    Assitantid
1              3             5
2              6             3
3              1             2
4              6             4
  

Я хотел бы сгенерировать таблицу с точки зрения Кена (id = 3), поэтому его идентификатор может присутствовать в двух разных столбцах в таблице собраний. (Оператор В не работает, поскольку я ввожу два разных столбца полей).

Таким образом, вывод будет:

 id   originatorid    Assitantid
1              3             5
2              6             3
  

Ответ №1:

Если вам действительно просто нужно посмотреть, в каком столбце находится идентификатор Кена, вам нужно только OR . Следующее приведет к точному выводу вашего примера.

 SELECT * FROM Meetings WHERE originatorid = 3 OR Assistantid = 3;
  

Если вам нужно пройти сложный маршрут и перечислить имена вместе с собраниями, OR ON здесь должно работать предложение in вашего join:

 SELECT 
  Administrators.name,
  Administrators.id,
  Meetings.originatorid,
  Meetings.Assistantid
FROM Administrators
   JOIN Meetings 
     ON Administrators.id = Meetings.originatorid 
     OR Administrators.id = Meetings.Assistantid
Where Administrators.name = 'Ken'
  

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

1. Однако у меня есть вопрос. Есть ли способ использовать селектор «IN» в сочетании с OR? Не в этом случае .. но в случае, если посередине есть дополнительная таблица: администратор Собрание Комната (только для учебных целей).

2. Мой комментарий неясен, я думаю, мне придется задать еще один вопрос по этому поводу.

3. @user903645 IN () предназначен для сравнения одного столбца с несколькими возможными допустимыми значениями. Единственными способами принудительно разделить его на несколько столбцов было бы задействовать некоторые сложные запросы joins и UNION для преобразования содержимого нескольких столбцов в один.

4. Спасибо за ваш комментарий. Я буду смотреть дальше в этом направлении!