streda, 20 august 2014 13:51 Written by 5140 times
Rate this item
(2 votes)

SQL - porovnanie zhodnosti obsahu dvoch tabuliek

Malý príklad, ako rýchlo porovnať, či dve tabuľky so zhodnou štruktúrou majú rovnaký počet riadkov s rovnakým obsahom. Príklad som testoval v prostredí Oracle 11g.

Využil som množinový SQL operátor MINUS a UNION.

(SELECT * FROM PROGRAM_STATUS
MINUS
SELECT * FROM PROGRAM_STATUS_COPY)
UNION 
(SELECT * FROM PROGRAM_STATUS_COPY
MINUS
SELECT * FROM PROGRAM_STATUS);


Vysvetlenie:
Máme dve tabuľky PROGRAM_STATUS a PROGRAM_STATUS_COPY.
Obidve tabuľky majú zhodnú štruktúru. Chcem zistiť, či majú rovnaký počet riadkov so rovnakým obsahom.
SQL príkaz sa skladá z viacerých príkazov. V prvom rade som spravil množinový rozdiel obsahu dvoch tabuliek A-B. Potom B-A. V zmene poradia je samozrejme z matematického hľadiska veľký rozdiel, preto je treba urobiť rozdiel oboma smermi. Nakoniec dva výsledky rozdielov množín sčítame množinovým operátorom UNION.
Ako iste vieme, množinový operátor UNION ukáže vo výsledku zoznam jedinečných riadkov, čo nám v tomto prípade postačuje. Pretože akonáhle nám príkaz ukáže čo len jeden riadok, je jasné, že obsah dvoch tabuliek nie je rovnaký a rovno aj vidíme rozdiel v čom.

S pozdravom.

Last modified on štvrtok, 21 august 2014 07:24
Alojz Benďák

Autor je administrátor webu a venuje sa programovaniu takmer 23 rokov.

  • prvý kontakt s počítačmi na strednej škole - PMD 1,2,3, PP06, Atari, Sinclair (programovanie v jazyku: strojový kód, basic a pascal):  2 roky
  • na VŠ - jazyky Turbo pascal a Turbo C: 1rok
  • programovanie databázového ekonomického širokoškálneho software v Delphi a C++ Borland (databázy Paradox): 8 rokov v Codex s.r.o. Nitra
  • programovanie webových aplikácií na databázach MySQL a MS SQL server: 1 roky na živnosť (firmy: Hermes Nitra, Schindler v Bratislave)
  • pracoval ako DBA v Homecredit Brno a vo VÚB Bratislava ako vyvojár + optimalizácie v SQL a PL/SQL na Oracle 11g (firma Accenture)
  • programoval programy pre súkromné firmy pre HW na skenovanie povrchov nádrží pre skladovanie tekutých palív (pristroj Leica)
  • momentálne pracuje ako DBA pod Oracle 11g a ako vyvojár vnútropodnikových databázových aplikacií v PHP, SQL, C++, C# a interface v PL/SQL: 11 rokov
  • ďalej programuje s HTML, CSS, Ajax, Javascript, VBA, MS visual C++ a C# malé podporné aplikácie
  • certifikát SQL expert for Oracle 11g   
  • spolupracuje a aktívne učí pre počítačové firmy: Lapis, IVIT v Nitre