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