проблема с таблицей, имеющей 2 внешних ключа, которые ведут к одной и той же таблице

0

У меня есть таблица "Таблица A", которая имеет два значения ("пользователь" и "оценщик"), которые используются в качестве идентификаторов для данных в другой таблице "Таблица B". В "Таблице B" любой существующий пользователь является оценщиком, он может оценивать других.

Поскольку ссылка "пользователь" и "эксперт" ссылается на одну и ту же таблицу, я не могу выполнить поиск в таблице B, если я хочу одновременно фильтровать пользователя и оценщика, ниже приведен пример того, что я имею в виду:

select 'tableA'.*
from 'tableA' 
left join 'tableB' on 'tableA'.'user_id' = 'tableB'.'id' 
left join 'tableB' on 'tableA'.'assessor_id' = 'tableB'.'id' 
where LOWER(tableB.first_name) REGEXP "John" # user name
    AND LOWER(tableB.first_name) REGEXP "Bill" # assessor name

Есть ли быстрый способ обойти эту проблему или мне придется создать отдельную таблицу специально для оценщиков или как клонировать существующую таблицу пользователей?

Теги:

1 ответ

0
Лучший ответ

Вы присоединяетесь к одной таблице для другого сопоставления, используйте псевдоним таблицы, чтобы различать таблицу соединения

SELECT 'tableA'.* FROM 'tableA' AS TA
LEFT JOIN 'tableB' AS TB1 ON TB1.id = TA.'user_id'
LEFT JOIN 'tableB' AS TB2 ON TB2.id = TA.'assessor_id'
WHERE 
  LOWER(TB1.first_name) REGEXP "John" -- user name
    AND 
  LOWER(TB2.first_name) REGEXP "Bill" -- assessor name

Ещё вопросы

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