Hulgateooria ja hulgad päringutes

Allikas: Teadmusbaas

Hulgateooria artikkel Wikipedias

Matemaatikas tähistatakse hulkasid suurte ladina tähtedega, nt A, B, C, ..

Hulga liikmed paigutatakse alati loogeliste sulgude vahele loeteluna, nt A={2,4,6}, loetakse hulk A liikmeteks on 2 ja 4 ja 6

Hulgateooria algab kahendsüsteemsete suhetega objektide vahel, kui objekt o kuulub hulka A, siis seda tähistatakse o∈A

Tuletatud kahendsüsteemsed suhted kahe hulga vahel on alamhulga ja hulga suhted. Kui kõik hulga A liikmed kuuluvad ühtlasi ka hulka B, siis on hulk A hulga B alamhulgaks ja seda tähistakse A⊆B

Hulga definitsioonist tulenevalt on hulk alati ka iseenda alamhulk ja igasse hulka kuulub tühi hulk ø

Suuremate segaduste vältimiseks on kasutusel termin korralik alamhulk: kui A on B alamhulk ja A ei võrdu B, siis on A korralik alamhulk

Kahendsüsteemsed tehted hulkadega:

  1. Kahe hulga A ja B ühendus A∪B on hulk, millesse kuuluvad kõik liikmed millised on A või B või mõlema liikmed;
  2. Kahe hulga A ja B ühend A∩B on hulk, millesse kuuluvad liikmed on nii A kui B liikmed;
  3. Hulkade vahe (hulkade lahutamine) X ja A vahe tähistatakse X\A, mille elementideks on X elemendid, mis ei ole A elemendid;
  4. Sümmeetriline vahe AΔB või A⊖B liikmeteks on liikmed millised on ainult ühes ja mitte mõlemas hulgas, on arvutatav või avaldatav teiste hulgatehete kaudu: (A ∪ B) \ (A ∩ B) või (A \ B) ∪ (B \ A);
  5. Karteesia korrutis A × B on hulk, mille liikmeteks on kõikvõimalikud järjestatud paarid (a,b), kus a on hulga A liige ja b on hulga B liige;
  6. Hulga võimsus, mis näitab alamhulkade arvukust, näiteks hulga {1, 2} võimsuseks on { {}, {1}, {2}, {1, 2} }.

Hulgad päringutes

Oracle serveritel ja rakendustes (APEX) töötavad tabelite vahel järgmised hulgaoperatsioonid: ühendus - UNION, UNION ALL, ühend - INTERSECT ja vahe - MINUS. UNION ALL ühendab kõik liikmed mõlemast tabelist.

Süntaks on kõigil neil päringutel sarnane: SELECT veerud FROM esimene_tabel HULGAOPERAATOR SELECT veerud FROM teine_tabel. Täidetud peavad olema järgmised tingimused: mõlema päringu veergude arv peab olema võrdne ja andmetüübid peavad sobima (olema sama tüüpi)

Võimalik on tingimuste sobitamiseks (veeruks või andmetüübiks) kasutada TO_DATE(NULL), TO_CHAR(NULL) ja TO_NUMBER(NULL), üks näide ka: SELECT hire_date, employee_id, birth_date, job_id FROM employees UNION SELECT TO_DATE(NULL), employee_id, TO_DATE(NULL), job_id FROM job_history;

NB! ORDER BY saab kasutada ainult ühe poole päringu juures (esimese või teise juures)