我想获取数据形式 mysql 表,其中数据是否与右侧匹配


I want to get the data form form mysql table where data match with right side or not

SELECT a.*,b.clientId,c.partner_name, d.seo 
FROM project_estimate_detail as a,
    project as b,
    partner as c,
    projection as d 
WHERE a.project_cat_id = 5 and 
      a.project_id = b.id and 
      b.clientId = c.id and 
      c.status =1 and c.id = d.client_id 
GROUP BY(c.partner_name)

in c.id = d.client_id..我希望所有与d.client_id匹配或不匹配的行形式 c.id

使用左外连接。

但要做到这一点,你应该改为使用显式连接语法:-

SELECT a.*, b.clientId, c.partner_name, d.seo 
FROM project_estimate_detail as a,
INNER JOIN project as b ON a.project_id = b.id
INNER JOIN partner as c ON b.clientId = c.id
LEFT OUTER JOIN projection as d ON c.id = d.client_id 
WHERE a.project_cat_id = 5 
AND c.status =1 
GROUP BY(c.partner_name)

请注意,我怀疑这不会给你你想要的结果。您按_partner_name_分组,因此每partner_name将返回一行。由于我假设单个合作伙伴名称将有多个客户端,并且他们可以有多个估计值,因此您将获得来自_project_estimate_detail_和项目的一行详细信息,并且为每个_partner_name_返回项目;哪些行详细信息尚未确定,并且可能实际上是随机的。

如果我

没看错的话,你想通过一个共同的 atribute ID 连接多个表。在我看来,你应该使用LEFT JOIN.http://www.w3schools.com/sql/sql_join_left.asp

在此处查看 JOIN 之间的差异,并确定哪种方式更适合您:

http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins