2016-09-30 1 views
0

Problem & & KontextSQL gibt doppelte Daten (wahrscheinlich falsche SQL-Abfrage)

Ich erhalte doppelte Ergebnisse. Die Tabellenregistrierung enthält 2 Spalten & 2 Zeilen, event_id, participant_id mit 1,3 und 1,1.

Jetzt, wenn ich alle Registrierungen (select * from registration) auswähle, funktioniert das. Die Namen (firstname, lastname) der 2 Teilnehmer sind ('test' ,'test1') und ('Gregor', 'unknown').

gewünschten Ergebnisse

Ich möchte ein searchfunctionality machen, die nur die Teilnehmer zurück, die sie für eine Veranstaltung mit dem ‚Test‘ registriert in ihrem ersten oder Nachname.

aktuelle Ergebnisse

Mit der Abfrage unten bekomme ich 4 Ergebnisse (egal Teilnehmer).

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; 

Fehlermeldungen

keine, gibt nur 4 Zeilen anstelle von 1.

Antwort

5

Unwrapped OR und eine deutliche helfen ... Versuchen

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

gearbeitet, dank . – Ivaro18