2016-09-30 58 views
0

问题& &方面SQL返回双数据(可能是错误的SQL查询)

我得到双倍的效果。表注册包含2列& 2行,event_id,participant_id具有1,31,1

现在,当我选择所有注册(select * from registration)这个工作。

2位参与者的姓名(firstname, lastname)('test' ,'test1')('Gregor', 'unknown')

预期的效果

我想打一个searchfunctionality将返回只是注册他们在他们的第一或姓氏“测试”的活动参与者。

目前的结果

随着下面的查询,我得到4次的结果(所有相同的参与者)。

select * from participant p, event e, registration r 
      where p.firstname LIKE '%test%' 
      OR p.lastname LIKE '%test%' 
      AND p.id = r.participant_id 
      AND e.id = r.event_id 
      AND e.id = 1; 

错误信息

没有,只是返回4行而不是1

回答

5

无包装OR和不同,将帮助...尝试

select distinct * 
from participant p, event e, registration r 
where (p.firstname LIKE '%test%' 
    OR p.lastname LIKE '%test%') 
AND p.id = r.participant_id 
AND e.id = r.event_id 
AND e.id = 1; 
+0

工作,谢谢。 – Ivaro18