[MySQL] jak sformułować złożone pytanie

0

Mam problem z prawidłowym (od strony funkcjonalnej) sformułowaniem pytania.
W tabeli BL_USR mam m.in. kolumny ID_USR i NICK_USR i gdy chcę odfiltrować tylko osoby z nickiem zawierającym fragment tekstu, używam (to są fragmenty wysyłane z Delphi poprzez ZEOSLib):

SELECT * FROM bl_usr  WHERE nick_usr REGEXP "'+edFiltruj.Text+'"' 

i działa to bardzo ładnie.

W drugiej tabeli są dwie kolumny ID_ATAK i ID_OBRONY. Gdy wysyłam zapytanie, które ma na celu wyświetlenie tych rekordów, gdzie w nicku atakującego lub broniącego znajduje się żądany tekst:

SELECT * FROM bl_usr, deklaracje WHERE  bl_usr.nick_usr REGEXP "'+edFiltruj.Text+'" AND (bl_usr.id_usr=deklaracje.id_atak OR bl_usr.id_usr=deklaracje.id_obrony);

to działa dobrze do chwili, gdy atakujący ALBO broniący spełniają warunek - rekordy są pojedyncze.
Gdy jednak i atakujący i broniący w tym samym rekordzie spełniają warunek, czyli np. wpisuję literę "A" i gdy atakujący to MAK, a broniący to ADAM, pojawi się podwójny wpis (dwa identyczne rekordy).
Wiem, że to jest zgodne z zasadami Inner Join i tak to wręcz powinno działać (tworzy kombinację wszystkich rekordów jednej i drugiej tabeli).
Jak sformułować pytanie, aby jeżeli warunek jest spełniony dla ID_ATAK, to już nie powtarzał tego rekordu dla ID_OBRONY, czyli gdy atakujący i broniący spełniają warunek, to rekord ma się pojawić tylko raz ?
Z góry dziękuję za pomoc.

0

nie wiem czy dobrze zrozumiałem ale może zrób na końcu:

group by bl_usr.id_usr

1

select distinct ...

0

Wielkie dzięki :)
Chwilę się jeszcze pomęczyłem, zanim wpadłem, że trzeba ściśle wypisać tylko te kolumny, któe są potrzebne, bo inaczej rozmnażanie szło w najlepsze (zgodnie zresztą z zasadami)

1 użytkowników online, w tym zalogowanych: 0, gości: 1