区别于联合查询

时间:2017-04-05 12:18:37

标签: mysql sql

当我运行此查询时:

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 :(得分: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 . "%'