postgresql, filtrowanie

postgresql, filtrowanie
P8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
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

YA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2384
1
Kopiuj
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'.

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3891
1

Można też bez negacji:

Kopiuj
select
    id
from
    tabelka
group by
    id
having
     sum(case when zdarzenie = 'wymiana' then 1 else 0 end) = 0
P8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0

dzięki

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.