postgresql, filtrowanie

0

Cześć,

Jak sprawdzić/wyjać informację dal których jakiś warunek został/nie został chociaż raz spełniony
np. mam tabele z 2 kolumnami
ID obiektu, ID zdarzenia, zdarzenie

1 | 10 | sprzedaz
1 | 11 | wymiana
2 | 12 | sprzedaz

potrzebuje znalezc tylko te obiekty gdzie nigdy nie wystapilo zdarzenie "wymiana"
w tym wypadku id 2

1
select 
  distinct t1.id 
from 
  tableka t1 
where 
  not exists (select 1 from tabelka t2 where t2.id=t1.id and t2.zdarzenie='wymiana')

Wybieramy (unikalne) ID, dla których nie istnieje rekord ze zdarzeniem 'wymiana'.

1

Można też bez negacji:

select
    id
from
    tabelka
group by
    id
having
     sum(case when zdarzenie = 'wymiana' then 1 else 0 end) = 0
0

dzięki

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