2016-09-30 32 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