MYSQL Multiple Joins重复输出

时间:2014-08-05 13:23:27

标签: mysql

SELECT p.id, p.first
FROM people p
LEFT JOIN job j ON ( p.job_id = j.id )
LEFT JOIN favourites f ON ( p.company_id = f.company_id )
WHERE p.company_id = 1

我有3张桌子。

Job Favourites People

每个人都有company_id。当我尝试上述操作时,它会输出p.idp.first两次。如果我删除其中一个JOIN,则输出符合预期,但没有删除的表。

1 个答案:

答案 0 :(得分:2)

正如我在评论中所说,你在这里只是一对一的关系,它可以准确地告诉你你在说什么。

就像你有一个关于人的注册表,你最喜欢这个人的两个最爱。澄清以下情况:

表人:

id   name        job_id    first
 1     John         1        1
 2     Campos       2        2

表格工作

id   job
1     Programmer
2     Developer

表格收藏夹

company_id   desc
 1            Blah
 2            Bleh
 1            Blih

在上述模型中,人们有两个最喜欢的注册表。

对于您的模型,似乎一个人只能有一份工作,但由于您没有指定表favourites看起来像什么,所以我所展示的情况可能就是产生您的问题。因此,要快速解决它,您可以使用DISTINCT命令,如:

SELECT DISTINCT p.id, p.first
  FROM people p
       LEFT JOIN job j 
              ON ( p.job_id = j.id )
       LEFT JOIN favourites f 
              ON ( p.company_id = f.company_id )
 WHERE p.company_id = 1