• Welcome to TUKE FÓRUM - Fórum pre študentov Technickej Univerzity v Košiciach.
 

DBS

Started by xxx3, 16.02.2012, 15:10:05

« predchdzajce - alie »

veteran

Quote from: xxx3 on  19.03.2012, 23:39:31
a este s tymto by som potreboval pomoct: 11. Vypíšte spz áut, ktorým boli poskytnuté služby. Duplicity vylúčte.

Ako vylucim duplicity ?
SELECT UNIQUE alebo SELECT DISTINCT. Ak si old-school, tak použi to prvé, ak chceš ísť podľa najnovších Oracle trendov, použi to druhé  ;D Sú to ekvivalentné príkazy  ;)

xxx3

ok, dakujem ... a este toto, ze ked pisem tu relacnu algebru tak je jedno ci naskor vyberiem stlpce cez "PI" a az potom robim tu podmienku alebo opacne ?

veteran

Quote from: xxx3 on  19.03.2012, 23:53:09
ok, dakujem ... a este toto, ze ked pisem tu relacnu algebru tak je jedno ci naskor vyberiem stlpce cez "PI" a az potom robim tu podmienku alebo opacne ?
Nie je to jedno.

xxx3

#103
nie ? A kedy je to ako ? ... nie je jedno ci naskor vyberiem stlpce z tabulky ktore mi treba a potom z nich povyberam len tie raidky, ktore splnaju pomienku ... alebo ci najskor vyberiem vsetky raidky splnajuce podmienku a potom z niych vyberiem len tie stlpce ktore potrebujem vypisat ?

vysledok je rovnaky, nie ?

veteran

#104
Quote from: xxx3 on  20.03.2012, 00:14:28
nie ? A kedy je to ako ? ... nie je jedno ci naskor vyberiem stlpce z tabulky ktore mi treba a potom z nich povyberam len tie raidky, ktore splnaju pomienku ... alebo ci najskor vyberiem vsetky raidky splnajuce podmienku a potom z niych vyberiem len tie stlpce ktore potrebujem vypisat ?

vysledok je rovnaky, nie ?
A čo v prípade, ak máš vypísať len také stĺpce, ktorých sa netýka podmienka?  ;) Dajme tomu, že máš vybrať first_name a last_name, ale podmienka sa týka napr. hire_date. Ty si najprv vyberieš všetky riadky z tabuľky, ale v nich len stĺpce first_name a last_name. Ako z tohto výberu potom určíš, či je splnená daná podmienka pre hire_date? Nijak. Musíš to urobiť presne opačne. Najprv otestovať podmienku a z riadkov, ktoré ju spĺňajú povyberať tie stĺpce, ktoré treba.

xxx3

no to mas pravdu, ale take v tych ulohach tusim nie je :D

... ale tak radsej davam vsade nasjkor podmienku a potom vyberanie ... tak to nemoze byt zle, snad

veteran

#106
Quote from: xxx3 on  20.03.2012, 01:37:10
... ale tak radsej davam vsade nasjkor podmienku a potom vyberanie ... tak to nemoze byt zle, snad
Existujú určite prípady, kedy je to oveľa výhodnejšie písať opačne (nič konkrétne mi ale nenapadá :D). Ale nemyslím, že sa dá niečo pokaziť tým, že sa to napíše "štandardne" (PROJECT stĺpce (SELECT podmienky)).

Takto vyzerá štandardné mapovanie selekcie a projekcie:

maros67

Ako uplne odstranim tabulku?? myslim tym aj tie haky baky co tam ostanu ked dam select * from cat; ?

veteran

Quote from: maros67 on  21.03.2012, 00:03:52
Ako uplne odstranim tabulku?? myslim tym aj tie haky baky co tam ostanu ked dam select * from cat; ?
purge recyclebin;

esperian

cv6 - 6. uloha mate to tak ako vo vysledkoch ??

veteran

Quote from: esperian on  22.03.2012, 22:51:57
cv6 - 6. uloha mate to tak ako vo vysledkoch ??
Ja mám o jeden výsledok viac (16). Ten posledný už (pre dnešný deň) pracuje viac ako 200 mesiacov (200 mesiacov a 9 dní).

Rajo

Quote from: veteran on  22.03.2012, 23:00:39
Quote from: esperian on  22.03.2012, 22:51:57
cv6 - 6. uloha mate to tak ako vo vysledkoch ??
Ja mám o jeden výsledok viac (16). Ten posledný už (pre dnešný deň) pracuje viac ako 200 mesiacov (200 mesiacov a 9 dní).

tak, tak, bohvie kedy to ona selectovala a preto sa to môže líšiť...a inak, ten Current Date čo trebalo zapísať v tvare "201237" tak to ste ako riešili ? lebo ja som to riešil tak, že mi to píše v tvare "YYYYMMDD" čiže pre dnešny dátum by mi vypisalo "20120323" ... a ona nulu nemá vo výsledku, vadí to? :D alebo ako to ona riešila?

Cici

ta forma je vecou systemu ako ten datum reprezentuje. Myslim ze to je dobre tak

veteran

Quote from: Rajo on  23.03.2012, 15:47:08
lebo ja som to riešil tak, že mi to píše v tvare "YYYYMMDD" čiže pre dnešny dátum by mi vypisalo "20120323" ... a ona nulu nemá vo výsledku, vadí to? :D alebo ako to ona riešila?
AFAIK, v Oracli existuje len jedna číselná reprezentácia mesiaca a to MM (no a ptm ešte RM, rímske čísla). Aj mne to píše 03, ale myslím, že je to OK.

Rajo

Quote from: veteran on  23.03.2012, 21:51:36
Quote from: Rajo on  23.03.2012, 15:47:08
lebo ja som to riešil tak, že mi to píše v tvare "YYYYMMDD" čiže pre dnešny dátum by mi vypisalo "20120323" ... a ona nulu nemá vo výsledku, vadí to? :D alebo ako to ona riešila?
AFAIK, v Oracli existuje len jedna číselná reprezentácia mesiaca a to MM (no a ptm ešte RM, rímske čísla). Aj mne to píše 03, ale myslím, že je to OK.

lenže ak si extractuješ mesiac napríkald zo sysdate tak ti vypíše "3" , nie "03" ...
select EXTRACT(MONTH FROM sysdate) from dual;

veteran

Quote from: Rajo on  24.03.2012, 02:56:27
lenže ak si extractuješ mesiac napríkald zo sysdate tak ti vypíše "3" , nie "03" ...
select EXTRACT(MONTH FROM sysdate) from dual;
Problém je, že z extractu vieš vydolovať len jeden údaj :D

xxx3

jak spravim toto: 5. Ohraničte last_name spredu aj zozadu symbolom * ?

LPAD a RPAD su na doplnenie, lenze tam treba zadat dlzku, aku maju mat vsetky retazce a zvysok mi doplni hviezdickami ...

veteran

Quote from: xxx3 on  25.03.2012, 00:02:03
jak spravim toto: 5. Ohraničte last_name spredu aj zozadu symbolom * ?

LPAD a RPAD su na doplnenie, lenze tam treba zadat dlzku, aku maju mat vsetky retazce a zvysok mi doplni hviezdickami ...
Dáš funkciu concat do funkcie concat (najprv hviezdička z jednej strany, potom z druhej).

xxx3

#118
a ta dalsia uloha, mam toto: SQL>  SELECT employee_id,last_name, TRUNC(MONTHS_BETWEEN(SYSDATE, HIRE_DATE)) "MESIACE" from hr.employees WHERE XXX>200 order by "MESIACE" DESC;

co mam dat miesto XXX ? ... "MESIACE" to neberie

a dik za ten concat

veteran

Quote from: xxx3 on  25.03.2012, 00:11:36
a ta dalsia uloha, mam toto: SQL>  SELECT employee_id,last_name, TRUNC(MONTHS_BETWEEN(SYSDATE, HIRE_DATE)) "MESIACE" from hr.employees WHERE XXX>200 order by "MESIACE" DESC;

co mam dat miesto XXX ? ... "MESIACE" to neberie

a dik za ten concat
"Mesiace" tam dať nemôžeš, pretože najskôr sa vykonáva klauzula WHERE a vtedy ešte nepoznáme kolónku "Mesiace" (v tom čase to meno ešte nemá)  ;) Za XXX dosaď to, čo neskôr pomenuvávaš ako "Mesiace", teda TRUNC(MONTHS_BETWEEN(SYSDATE, HIRE_DATE)). Nie je to síce pekné riešenie, ale funguje. Krajšie sa to dá urobiť jedine cez two-level select-y (IMHO zbytočná robota).

Rajo

Quote from: veteran on  24.03.2012, 03:17:19
Quote from: Rajo on  24.03.2012, 02:56:27
lenže ak si extractuješ mesiac napríkald zo sysdate tak ti vypíše "3" , nie "03" ...
select EXTRACT(MONTH FROM sysdate) from dual;
Problém je, že z extractu vieš vydolovať len jeden údaj :D

select to_char(sysdate,'YYYYfmMmfmDd') "Current Date"from dual;
:trestac:

veteran

Quote from: Rajo on  25.03.2012, 02:35:42
Quote from: veteran on  24.03.2012, 03:17:19
Quote from: Rajo on  24.03.2012, 02:56:27
lenže ak si extractuješ mesiac napríkald zo sysdate tak ti vypíše "3" , nie "03" ...
select EXTRACT(MONTH FROM sysdate) from dual;
Problém je, že z extractu vieš vydolovať len jeden údaj :D

select to_char(sysdate,'YYYYfmMmfmDd') "Current Date"from dual;
:trestac:
No paráda  :hug: Tu teda asi nebudú vypísané všetky formáty  ;D

Rajo

Quote from: veteran on  25.03.2012, 03:12:37
Quote from: Rajo on  25.03.2012, 02:35:42
Quote from: veteran on  24.03.2012, 03:17:19
Quote from: Rajo on  24.03.2012, 02:56:27
lenže ak si extractuješ mesiac napríkald zo sysdate tak ti vypíše "3" , nie "03" ...
select EXTRACT(MONTH FROM sysdate) from dual;
Problém je, že z extractu vieš vydolovať len jeden údaj :D

select to_char(sysdate,'YYYYfmMmfmDd') "Current Date"from dual;
:trestac:
No paráda  :hug: Tu teda asi nebudú vypísané všetky formáty  ;D

QuoteFormats that start with FM - zeros and blanks are suppressed.
e.g.
to_char(sysdate, 'FMMonth DD, YYYY'); will return 'June 9, 2005' not 'June 09 2005'

xxx3

#123
ked posielate ulohy na DBS tak tam davate len tie priakzy, ktore zadavate alebo aj vysledok, ktory vam ten prikaz vypise ?

+ 14. uloha - nemate tam uplne ine nazvy department name ?

Rajo

Quote from: xxx3 on  25.03.2012, 18:39:21
ked posielate ulohy na DBS tak tam davate len tie priakzy, ktore zadavate alebo aj vysledok, ktory vam ten prikaz vypise ?

+ 14. uloha - nemate tam uplne ine nazvy department name ?

veď výsledok máš vypísany v tom pdf na moodli "Vypracovane výsledky"

14. úloha je výsledok opak 14tky, ktorá tam je napísana :D tam je výsledok IS NOT NULL a my máme dať IS NULL :D