Czy da się zlikwidować 'UNION'?

0

Poniższe zapytanie działa poprawnie, chciałbym jednak zapytać, czy istnieje możliwość zlikwidowania UNION'a i złączenia tych dwóch zapytań w jedno?
Wydaje mi się, że tak było by wydajniej...
Chcę jednocześnie wyciągnąć informacje n/t osób przypisanych do klienta i kontrahenta w zależności od umowy.
Próbowałem z OUTER JOIN'ami, ale nie uzyskuję niestety żadnych wyników.

SELECT 
      o.osobaid, o.imie, o.nazwisko
FROM
      umowa u,
      klient kl,
      kontakt ko,
      osoba o
WHERE
      u.klient_id = kl.klient_id
      and kl.klient_id = ko.klient_id
      and ko.osoba_id = o.osoba_id
      and u.umowa_id = 12300

UNION   

SELECT 
      o.osobaid, o.imie, o.nazwisko
FROM
      umowa u,
      klient kl,
      kontakt ko,
      osoba o,
      kontrahent kh
WHERE
      kl.klient_id = kh.klient_id
      and u.umowa_id = kh.umowa_id
      and kh.klient_id = kl.klient_id 
      and kl.klient_id = ko.klient_id 
      and ko.osoba_id = o.osoba_id 
      and u.umowa_id = 12300
0

A próbowałeś już może tak:

SELECT 
      o.osobaid, o.imie, o.nazwisko
FROM
      umowa u,
      klient kl,
      kontakt ko,
      osoba o,
      kontrahent kh
WHERE
(
      u.klient_id = kl.klient_id
      and kl.klient_id = ko.klient_id
      and ko.osoba_id = o.osoba_id
      and u.umowa_id = 12300
 ) or(      kl.klient_id = kh.klient_id
      and u.umowa_id = kh.umowa_id
      and kh.klient_id = kl.klient_id 
      and kl.klient_id = ko.klient_id 
      and ko.osoba_id = o.osoba_id 
      and u.umowa_id = 12300)

możliwe, że trzeba by dodać distinct, ale nie jestem pewien.

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