Jak rozgryźć ten problem?

0

Mam dwie tabele:

Osoby
id
imie
nazwisko
nr dnia (rozpoczęcie szkolenia dnia w czerwcu)
ilość dni szkolenia (ile dni pod rząd zaplanowanych na to szkolenie)

Szkolenia zrealizowane
id
id_osoby
nr dnia szkolenia

Chcę sprawdzić która osoba nie ma zrealizowanych wszystkich dni szkoleniowych, ktore miala zaplanowane kolejno pod rząd np.
Tabela osoby:
1 | Andrzej | Andrzejewski | 15 (czerwca) | 5 (dni) |
2 | Piotr | Piotrowski | 6 | 2 |

Tabela szkolenia:
1 | 1 | 15 |
1 | 1 | 16 |
1 | 1 | 17 |
1 | 1 | 18 |
2 | 2 | 6 |
2 | 2 | 7 |

Rekordów mam bardzo dużo - jakim zapytaniem SQL mogę znaleźć kto (z imienia i nazwiska) nie ma zrealizowanych wszystkich dni?

Z góry dziękuję za pomoc!

0

Generalnie tak:

SELECT
 *
FROM
 Osoby as o
WHERE
 o.zaplanowane_dni_szkolenia <>
 (
 SELECT 
   sum(dni_szkolenia)
 FROM
  Szkolenia as s
 WHERE
  s.id_osoby = o.id
 );

Nazwy tabel, pól, formaty daty jeśli są użyte, i inne szczegóły trzeba dostosować do konkretnej bazy.

Powyższe zapytanie wyświetli osoby które odbyły rożną ilość szkoleń niż zapalnanowano.

Pozdrawiam

p.s.
Jeśli są numery dni szkolenia, to lepsza może się okazać funkcja count niż sum.

Naprawdę wiele zależy od szczegółów, np. czy jedna osoba ma mieć jedno szkolenie, czy
wiele?

0

Faktycznie z COUNT działa. Dziękuję! :)

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