Zobraz vsetky oddelenia, ktore maju VSETKYCH zamestnancov s platom viac ako 1000. (aj datalog) Klasika zmenit "pre vsetky" na "not existuje"
SELECT dname FROM dept d WHERE NOT EXISTS (SELECT * FROM emp e WHERE e.sal < 1000 AND e.deptno = d.deptno)
lacne_odd(D):-emp(_,_,_,_,_,S,_,DN), dept(DN,D,_),S<1000.
drahe_odd(D):-dept(_,D,_),\+lacne_odd(D).
Vypiste vsetkych, ktory su vo firemnej hierarchi (pocet nadriadenych nad sebou) tak vysoko ako smith.
riesenie:
rovnaka_uroven(E1, E2) :- emp(E1, _, _, S1, _, _, _, _), emp(E2, _, _, S2,
_, _, _, _), S1 = null, S2 = null.
rovnaka_uroven(E1, E2) :- emp(E1, _, _, S1, _, _, _, _), emp(E2, _, _, S2,
_, _, _, _), \+(S1 = null),\+(S2 = null), rovnaka_uroven(S1, S2).
rovnako_vysoko_smith(N) :- emp(E1, N, _, _, _, _, _, _), emp(E2, smith, _, _,
_, _, _, _), rovnaka_uroven(E1, E2).