#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. Спасибо за ваш комментарий. Я буду смотреть дальше в этом направлении!