Author Topic: DBS  (Read 50372 times)

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: DBS
« Reply #100 on: 19.03.2012, 22:42:30 »
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

  • Hero Member
  • *****
  • Posts: 1010
    • View Profile
Re: DBS
« Reply #101 on: 19.03.2012, 22: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 ?

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: DBS
« Reply #102 on: 19.03.2012, 23:10:43 »
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

  • Hero Member
  • *****
  • Posts: 1010
    • View Profile
Re: DBS
« Reply #103 on: 19.03.2012, 23: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 ?
« Last Edit: 19.03.2012, 23:20:43 by xxx3 »

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: DBS
« Reply #104 on: 20.03.2012, 00:34:09 »
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.
« Last Edit: 20.03.2012, 00:37:21 by veteran »

xxx3

  • Hero Member
  • *****
  • Posts: 1010
    • View Profile
Re: DBS
« Reply #105 on: 20.03.2012, 00:37:10 »
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

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: DBS
« Reply #106 on: 20.03.2012, 00:41:32 »
... 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:
« Last Edit: 20.03.2012, 00:43:24 by veteran »

maros67

  • Newbie
  • *
  • Posts: 10
    • View Profile
Re: DBS
« Reply #107 on: 20.03.2012, 23:03:52 »
Ako uplne odstranim tabulku?? myslim tym aj tie haky baky co tam ostanu ked dam select * from cat; ?

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: DBS
« Reply #108 on: 20.03.2012, 23:39:59 »
Ako uplne odstranim tabulku?? myslim tym aj tie haky baky co tam ostanu ked dam select * from cat; ?
purge recyclebin;

esperian

  • Hero Member
  • *****
  • Posts: 873
    • View Profile
Re: DBS
« Reply #109 on: 22.03.2012, 21:51:57 »
cv6 - 6. uloha mate to tak ako vo vysledkoch ??

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: DBS
« Reply #110 on: 22.03.2012, 22:00:39 »
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

  • Sr. Member
  • ****
  • Posts: 346
    • View Profile
Re: DBS
« Reply #111 on: 23.03.2012, 14:47:08 »
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

  • Jr. Member
  • **
  • Posts: 98
    • View Profile
Re: DBS
« Reply #112 on: 23.03.2012, 18:57:22 »
ta forma je vecou systemu ako ten datum reprezentuje. Myslim ze to je dobre tak

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: DBS
« Reply #113 on: 23.03.2012, 20:51:36 »
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

  • Sr. Member
  • ****
  • Posts: 346
    • View Profile
Re: DBS
« Reply #114 on: 24.03.2012, 01:56:27 »
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" ...
Code: [Select]
select EXTRACT(MONTH FROM sysdate) from dual;

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: DBS
« Reply #115 on: 24.03.2012, 02:17:19 »
lenže ak si extractuješ mesiac napríkald zo sysdate tak ti vypíše "3" , nie "03" ...
Code: [Select]
select EXTRACT(MONTH FROM sysdate) from dual;
Problém je, že z extractu vieš vydolovať len jeden údaj :D

xxx3

  • Hero Member
  • *****
  • Posts: 1010
    • View Profile
Re: DBS
« Reply #116 on: 24.03.2012, 23: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 ...

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: DBS
« Reply #117 on: 24.03.2012, 23:07:58 »
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

  • Hero Member
  • *****
  • Posts: 1010
    • View Profile
Re: DBS
« Reply #118 on: 24.03.2012, 23: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
« Last Edit: 24.03.2012, 23:17:36 by xxx3 »

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: DBS
« Reply #119 on: 24.03.2012, 23:26:30 »
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

  • Sr. Member
  • ****
  • Posts: 346
    • View Profile
Re: DBS
« Reply #120 on: 25.03.2012, 01:35:42 »
lenže ak si extractuješ mesiac napríkald zo sysdate tak ti vypíše "3" , nie "03" ...
Code: [Select]
select EXTRACT(MONTH FROM sysdate) from dual;
Problém je, že z extractu vieš vydolovať len jeden údaj :D

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

veteran

  • Hero Member
  • *****
  • Posts: 956
    • View Profile
Re: DBS
« Reply #121 on: 25.03.2012, 03:12:37 »
lenže ak si extractuješ mesiac napríkald zo sysdate tak ti vypíše "3" , nie "03" ...
Code: [Select]
select EXTRACT(MONTH FROM sysdate) from dual;
Problém je, že z extractu vieš vydolovať len jeden údaj :D

Code: [Select]
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

  • Sr. Member
  • ****
  • Posts: 346
    • View Profile
Re: DBS
« Reply #122 on: 25.03.2012, 16:33:03 »
lenže ak si extractuješ mesiac napríkald zo sysdate tak ti vypíše "3" , nie "03" ...
Code: [Select]
select EXTRACT(MONTH FROM sysdate) from dual;
Problém je, že z extractu vieš vydolovať len jeden údaj :D

Code: [Select]
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

Quote
Formats 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

  • Hero Member
  • *****
  • Posts: 1010
    • View Profile
Re: DBS
« Reply #123 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 ?
« Last Edit: 25.03.2012, 18:51:31 by xxx3 »

Rajo

  • Sr. Member
  • ****
  • Posts: 346
    • View Profile
Re: DBS
« Reply #124 on: 25.03.2012, 19:18:37 »
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