2017-04-05 140 views
-1

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'?

The result I get

谢谢!

+2

编辑您的问题,并提供样本数据和预期结果。 –

+0

在处理'where'子句中的'和'和'or'时,您可能想使用parantheses。 – fancyPants

回答

1
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 - 稍微容易阅读。 –

0

如果在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 . "%'