我想在mysql查询中加入以下4个表(lead,categories,sales_persons,website_assigns):
必需:我需要潜在客户ID和潜在客户记录,但不确定该潜在客户的类别,销售人员是否存在, 如果他们的类别和销售人员存在,那么否则没有必要的意味着null。
lead和sales_person direct之间没有任何关系,它们与第三个表绑定,即website_assign
MySql查询:
SELECT a.id, a.name, b.name, c.first_name, c.last_name
FROM leads a INNER JOIN sales_persons c
LEFT JOIN categories b ON a.category_id = b.id
LEFT JOIN website_assigns d ON a.id = d.lead_id and c.id = d.sales_person_id
以上查询给我重复记录了潜在客户,类别和销售人员表
表格
leads:
id | name | category_id
1 xyz 12
2 abc 13
3 def 14
4 gty 15
5 wer 16
categories:
id | name
12 grocery
13 cloths
14 books
15 travel
16 furniture
sales_persons:
id | first_name | last_name
111 Jack Soloman
112 Peris Rock
113 Pull Cha
114 Tim shock
website_assigns:
id | lead_id | sales_person_id
1 1 112
2 1 114
3 2 113
4 2 111
5 3 113
6 3 112
7 3 114
附上重复的记录截屏:
查看重复的ID(潜在客户ID),名称(类别名称),sales_person的名字和姓氏,
但是4847,5888只分配了销售人员。
在屏幕截图中,leadsite_assign是同一个表website_assign。 所以忽略表的名称。
答案 0 :(得分:1)
试试这个:
SELECT
distinct a.id, a.name, b.name, c.first_name, c.last_name
FROM leads a
LEFT JOIN
website_assigns d on a.id = d.lead_id
LEFT JOIN
sales_persons c on c.id = d.sales_person_id
LEFT JOIN
categories b ON a.category_id = b.id
输出:
id name name first_name last_name
--- ---- ------- --------- --------
1 xyz grocery Peris Rock
1 xyz grocery Tim shock
2 abc cloths Jack Soloman
2 abc cloths Pull Cha
3 def books Peris Rock
3 def books Pull Cha
3 def books Tim shock
4 gty travel NULL NULL
5 wer furniture NULL NULL
了解加入:
我们可以看到leads
和sales_person
通过website_assigns
表间接连接。因此,我们使用LEFT JOIN将这3个表连接在一起。
LEFT JOIN基本上返回左侧表格中的每一行。右侧表中的非匹配行映射到NULL
。
categories
和leads
之间的关系是a.category_id = b.id