与联合查询
问题描述:
Distincting当我运行此查询:与联合查询
SELECT DISTINCT P.Projectnaam, P.ProjectStatus, P.ID, L.Stukey, L.ProjectKey
FROM Projecten P, Projectleden L
WHERE P.ProjectStatus = 'Open' || P.ProjectStatus = 'Dicht' &&
L.Stukey = '400049093' &&
P.ID = L.ProjectKey &&
Projectnaam LIKE '%" . $in . "%'
有3条记录与它“打开”,但它显示在输出每一个可能的组合。我如何区分'Projectname'?
谢谢!
答
SELECT DISTINCT P.Projectnaam, P.ProjectStatus, P.ID, L.Stukey, L.ProjectKey
FROM Projecten P inner join Projectleden L
on P.ID = L.ProjectKey
WHERE
P.ProjectStatus in ('Open','Dicht') &&
L.Stukey = '400049093' &&
Projectnaam LIKE '%" . $in . "%'
同时使用连接,同时包括多个表,否则它需要笛卡尔产品最终显示所有可能的组合。
+1
我会在('Open','Dicht')中建议p.projectstatus - 稍微容易阅读。 –
答
如果在where子句中有“AND”和“OR”,那么假设使用pamentalhesis。 而且你也没有加入这两个表,它会给出基于交叉连接的结果,所以试着根据它们之间的关系加入这两个表。
SELECT DISTINCT P.Projectnaam, P.ProjectStatus, P.ID, L.Stukey, L.ProjectKey
FROM Projecten P join Projectleden L on (your joining condition)
WHERE (P.ProjectStatus = 'Open' or P.ProjectStatus = 'Dicht') and
L.Stukey = '400049093' and
P.ID = L.ProjectKey and
Projectnaam LIKE '%" . $in . "%'
编辑您的问题,并提供样本数据和预期结果。 –
在处理'where'子句中的'和'和'or'时,您可能想使用parantheses。 – fancyPants