4. feladat * (kulso join) * Az ORAUSER nevu oracle felhasznalo tulajdonaban * van egy dolgozo es egy osztaly nevu tabla. * Irjunk egy olyan lekerdezest, ami kiirja a dolgozo nevet, fizeteset, * az osztaly nevet es telephelyet. * Azok az osztalyok is jelenjenek meg, amelyeken * meg nem dolgozik senki. Az ilyen osztalyokra a dolgozo neve oszlopban az * jelenjen meg, hogy 'FELVETEL ALATT', a fizetes oszlopban pedig az * alapertelmezes szerinti kezdo fizetes, ami 1500. $ Select nev, fizetes, onev, telephely from orauser.dolgozo t1, orauser.osztaly t2 where t1.oazon=t2.oazon (+); eredmeny: DNEV FIZETES ONEV TELEPHELY -------------- ---------- -------------- ------------- CLARK 2450 ACCOUNTING NEW YORK KING 5000 ACCOUNTING NEW YORK MILLER 1300 ACCOUNTING NEW YORK SMITH 800 RESEARCH DALLAS ADAMS 1100 RESEARCH DALLAS FORD 3000 RESEARCH DALLAS SCOTT 3000 RESEARCH DALLAS JONES 2975 RESEARCH DALLAS ALLEN 1600 SALES CHICAGO BLAKE 2850 SALES CHICAGO MARTIN 1250 SALES CHICAGO JAMES 950 SALES CHICAGO TURNER 1500 SALES CHICAGO WARD 1250 SALES CHICAGO FELVETEL ALATT 1500 OPERATIONS BOSTON * (Adatbazis link + hierarchikus lekerdezes) * Most mar ket adatbazist is el tudtok erni az SQLPLUS-bol: * A TOMX gepen levo V7 adatbazist es a MEDUSA gepen levo V8 adatbazist. * (Ugyanis letrehoztam mindenki szamara egy azonositot a TOMX gepen futo * adatbazis-kezeloben is.) * Hozzatok letre mindket adatbazisban adatbazis link-et, amelyek segitsegevel * hivatkozni tudtok a masik adatbazis objektumaira. (Ehhez segitseg az * sqlnet.txt allomanyban talalhato.) * Ezek segitsegevel hozzatok letre a V8 adatbazisban egy tablat, amelyben * a V7 adatbazis ORAUSER.CSALADFA tablajabol azok nevei szerepelnek, akik * Adam unokai. Link: $ create database link tomxlink onnect to szamosp identified by szamosp using 'tomx'; Rekurziv lekerdezes: $ Select lpad(' ',level-1)||nev||' '|| szulo from orauser.csaladfa@v7 START WITH nev='Adam' CONNECT BY PRIOR gyerek=szulo; * (beepitett SQL fuggvenyek hasznalata) * Adjuk meg, hogy hany masodperc telt mar el a mai napbol. $ Select (sysdate-trunc(sysdate))*24*3600 from dual; * Adjuk meg azoknak az adatbazis-felhasznaloknak a neveit, * akik neveben pontosan 3 db 'E' betu van. $ select username from all_users where instr(upper(username), 'E', 1, 3)>=0 and instr(upper(username),'E',1,4) = 0; * Adjunk meg egy lekerdezest, amelyik megadja a tegnapi nap nevet magyarul, * angolul, nemetul es franciaul. $ select to_char(sysdate-1,' day','NLS_DATE_LANGUAGE=HUNGARIAN') from dual; $ select to_char(sysdate-1,' day','NLS_DATE_LANGUAGE=ENGLISH') from dual; $ select to_char(sysdate-1,' day','NLS_DATE_LANGUAGE=GERMAN') from dual; $ select to_char(sysdate-1,' day','NLS_DATE_LANGUAGE=FRENCH') from dual; * Adjunk meg egy lekerdezest, amelyik megadja, * hogy hany nap van meg hatra a honapbol. $ Select (last_day(sysdate)-sysdate) from dual; * Adjuk meg a kovetkezo ev elso hetfoi napjanak a datumat. $ select next_day( add_months( trunc(sysdate,'year'),12 )-1 ,'MONDAY') from dual;" * * * * *