表有2个外键导致同一个表的问题

时间:2017-12-15 16:52:27

标签: mysql

我有一个表,"表A",它有两个值("用户"和#34;评估者"),用作另一个数据的标识符表,"表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's name
    AND LOWER(tableB.first_name) REGEXP "Bill" # assessor's name

是否有快速解决此问题的方法,还是我必须专门为评估者创建一个单独的表,或者如何克隆现有的用户表?

1 个答案:

答案 0 :(得分: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's name
    AND 
  LOWER(TB2.first_name) REGEXP "Bill" -- assessor's name