SQL - reference – Oracle – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

SQL - reference – Oracle – Fórum – Programujte.comSQL - reference – Oracle – Fórum – Programujte.com

 

Ondra
~ Anonymní uživatel
244 příspěvků
3. 4. 2013   #1
-
0
-

Zdravím Vás,

v SQL jsem vcelku nováček a mám problém s jednou úlohou. Nejprve schéma databáze:

Zadání úlohy zní:

Vypište jména zaměstnanců se jménem bezprostředně nadřízeného a jménem vedoucího oddělení, ve kterém pracují.

SQL příkaz pak vypaná následovně:

select zamest.jmeno, sefik.jmeno, vedouci.jmeno
from zam zamest join zam sefik on (zamest.nadr = sefik.os_cis)
join oddel on (oddel.cis_odd = zamest.cis_odd)
join zam vedouci on (oddel.sef = vedouci.os_cis);

Co mi není jasné

Obecně mám problém s úlohami, ve kterých je zapotřebí pracovat s aliasy (jsou to vůbec aliasy?), tedy v tomto případě například zamest.jmeno, sefik.jmeno atd. Nemohl byste mi prosím někdo ten kód převést do "lidské řeči", abych poznal, co konkrétně to dělá?

Nahlásit jako SPAM
IP: 78.108.97.–
KIIV
~ Moderátor
+43
God of flame
3. 4. 2013   #2
-
0
-

tak aliasy potrebujes obvykle kdyz mas dlouhe nazvy nebo join tabulky se sebou samou...

kdyz budes delat select .... from  zam join zam on ( zam.neco = zam.neco_jineho )  - jak by databaze mohla vubec poznat co k cemu patri? 

join je tedy spojeni tabulek on je podminka jak poznat co k cemu patri...

select samozrejme potrebuje vedet presne co ma vratit.. neda se napsat   select jmeno, jmeno, jmeno .... jich tam je tolik, ze nejde poznat ze ktere tabulky si to ma vycucat z prstu

ani   select  zam.jmeno, zam.jmeno, oddel.jmeno  neni jednoznacne... a tak dale a tak dale

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
RomanZ
~ Anonymní uživatel
272 příspěvků
3. 4. 2013   #3
-
0
-

Tu práci s aliasy jedné tabulky si můžeš představit jako že každý alias sice ukazuje do stejné tabulky, ale na jiný řádek. Přesněji:

Jeden řádek v tabulce zam reprezentuje zaměstnance a má alias zamest.
Jiný řádek v tabulce zam reprezentuje šéfíka a má alias sefik.
A další řádek v tabulce zam reprezentuje vedoucího a má alias vedouci.

Join potom spojí tyto záznamy (podle podmínky za on), takže v resultsetu máš vždycky řádek, ve kterém je vedle sebe zaměstnanec, jeho šéfík a vedoucí. No a protože zaměstnanec, jeho šéfík a vedoucí všichni pocházejí z tabulky zam, tak mají všichni sloupec jmeno a tento sloupec se Ti v resultsetu objeví třikrát. Bez aliasu bys neuměl přistoupit ke jménu zaměstnance, protože současně máš ve stejném řádku jména dalších dvou lidí.

Nahlásit jako SPAM
IP: 90.176.60.–
RomanZ
~ Anonymní uživatel
272 příspěvků
3. 4. 2013   #4
-
0
-

from zam zamest join zam sefik on (zamest.nadr = sefik.os_cis)

Pro psaní podmínek platí podobná logika: vezmu řádek z tabulky zam a označím si ho zamest. Vezmu jiný řádek z tabulky zam a označím si ho sefik. Pokud platí podmínka (zamest.nadr = sefik.os_cis), vracím řádek ve výsledném  resultsetu, jinak k sobě tyto dva řádky nepatří a zkouším jiné - takto se projde kombinace každý s každým a vrátí se jen ty kombinace, které vyhovují podmínce.

Nahlásit jako SPAM
IP: 90.176.60.–
Ondra
~ Anonymní uživatel
244 příspěvků
3. 4. 2013   #5
-
0
-

Díky moc za odpovědi, už jsem se zorientoval. 

Nahlásit jako SPAM
IP: 78.108.97.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 1 host

Podobná vlákna

Reference — založil Míša

Undefined reference — založil janek

Reference vs. ukazatele — založil Gravatar

Reference ve 2d poli — založil Midnight

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý