当我运行此查询时:
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'?
谢谢!
答案 0 :(得分: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 :(得分:0)
如果有" AND"你应该使用paranthesis。和"或"在where子句中。 而且你没有加入这两个表,它会根据交叉连接给出结果,所以尝试根据它们之间的关系加入这两个表。
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 . "%'