Polecenie SQL wyświetlające rekordy z tabeli

Polecenie SQL wyświetlające rekordy z tabeli
T4
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11
0

Witam, może temat postu sugeruje błahy problem i może jest on prosty, ale nie do końca osobiście wiem jak skonstruować zapytanie Select.
Chodzi mianowicie o to, że mam dwie tabele OSOBY i ZAPISANE_OSOBY (połączone relacją), w pierwszej gromadzone są dane na temat osób, w drugiej znajdują się identyfikatory osób i data_zapisu. Chodzi mi o to, jak wydobyć dane z tabeli OSOBY , które nie występują w tabeli ZAPISANE_OSOBY ( czyli po prostu wyświetlić osoby "nie zapisane").
Mały zarys tabel z przykładowymi danymi na obrazku w załączniku:

P.S. Efektem ma być wyświetlenie podkreślonych osób

  • Rejestracja: dni
  • Ostatnio: dni
1

select *
from osoby o
where o.id_osoby not in (select z.id_osoby from zapisane_osoby z)

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
0

zapewne istnieje lepsze rozwiazanie ale mozesz zrobic cos takiego (to bedzie pseudokod)

Kopiuj
SELECT * 
  FROM osoby
  LEFT JOIN zapisane_osoby
    on osoby.id == zapisane_osoby.id
  WHERE  osoby.id <> zapisane_osoby.id
NE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 39
0

Oracle

Kopiuj
SELECT * 
  FROM OSOBY A
WHERE NOT EXISTS(SELECT 1 FROM ZAPISANY_OSOBY B WHERE B.ID_OSOBY = A.ID_OSOBY) 
  • Rejestracja: dni
  • Ostatnio: dni
0

OK, dzięki,

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
2

@fasadin lepiej tak

Kopiuj
SELECT * 
  FROM osoby
  LEFT JOIN zapisane_osoby
    ON osoby.id = zapisane_osoby.id
  WHERE  zapisane_osoby.id IS NULL

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.