Zavrieť

Porady

SQL - 2 update prikazy do jednej query

zk24 zk24

zk24 je offline (nepripojený) zk24

Ahojte,

sql tabulka "table1", tri stlpce: fist_name; last_name; personal_code

Values:
Katka; Malá,null
Petra, Jankova, 10
Petra,empty ,20

Q1:
update table1
set personal_code = 02
where first_name = 'petra'
and last_name = 'jankova'

Q2:
update table1
et personal_code = 03
where first_name = 'petra'
and last_name = ''

Ako prosím spojiť tieto dva príkazy do jedného? Ano viem, pustiť dva samostatné príkazy je jednoduchšie, ale v rámci učenia sa to snažím spojiť a táto zdanlivo jednoduchá záležitosť mi robí celkom problémy.

Ďakujem.
Naposledy upravil zk24 : 10.11.11 at 21:29
Usporiadat
zk24 zk24

zk24 je offline (nepripojený) zk24

V Q2 je samozrejme set personal_code... nie et...*
Naposledy upravil zk24 : 10.11.11 at 21:30
0 0
Menej reklamy? Zaregistrujte sa! - Žiadne vyskakovacie reklamy!
zk24 zk24

zk24 je offline (nepripojený) zk24

solved
0 0
2009 2009

2009 je offline (nepripojený) 2009

Myslím, že sa na to dá použiť príkaz OR. Ešte ma nenapadlo použiť 2 update v jednom príkaze. Nevidím v tom zmysel. Skôr na jeden UPDATE použiť 2 a viac rôznych podmienok. Ak Ti nik neodpovie pozriem sa na to za také 2 hodinky musím niečo odovzdať do 9:00
0 0
zk24 zk24

zk24 je offline (nepripojený) zk24

uz som vyriesila... nie, OR ani AND v tomto pripade nie je vhodne. Aspon jednoduche vlozienie AND medzi dva udpaty nefunguje.

vyriesila som to cez CASE (a vnorene THEN CASE)
Naposledy upravil zk24 : 11.11.11 at 07:30
0 0
zk24 zk24

zk24 je offline (nepripojený) zk24

Vyriesila som to takto. Nevravím že je to efektívna práca v tomto jednoduchom prípade (jasne ze jednoduchsie by bolo zrunnovat dva samostatne update) ale bol to iba píklad, myslím že využiteľnosť CASE (THEN CASE) je celkom fajn.
sql-query[1].jpg  
0 0
sthruska sthruska

sthruska je offline (nepripojený) sthruska

V praxi sa takéto prípady riešia pomocou parametrov.
0 0
zk24 zk24

zk24 je offline (nepripojený) zk24

Privítam akékoľvek nápady.... update hodnoty stlpca za podmienok hodnot v prvom a druhom stlpci (a viacej riadkov naraz samozrejme).

Privítam príklady a nápady ako sa to dá ešte vyriešiť.

Ďakujem.
0 0
2009 2009

2009 je offline (nepripojený) 2009

zk24 Pozri príspevok
uz som vyriesila... nie, OR ani AND v tomto pripade nie je vhodne. Aspon jednoduche vlozienie AND medzi dva udpaty nefunguje.

vyriesila som to cez CASE (a vnorene THEN CASE)
Cez CASE? Priložíš to prosím? Zaujímalo by ma ako si ti to podarilo lebo sa odvolávaš na dva stĺpce a updatovať chceš tretí. Alebo si CASE použila v procedúre? Ja som sa snažila použiť UNION ALL ale to asi funguje iba na selecty. Čo už..
0 0
2009 2009

2009 je offline (nepripojený) 2009

zk24 Pozri príspevok
Vyriesila som to takto. Nevravím že je to efektívna práca v tomto jednoduchom prípade (jasne ze jednoduchsie by bolo zrunnovat dva samostatne update) ale bol to iba píklad, myslím že využiteľnosť CASE (THEN CASE) je celkom fajn.
Hups sorry otvorila som si tému a na pol hodinku som odbehla. Neviem .....takto pracovať nie je asi praktické s väčšou tabuľkou.
0 0
zk24 zk24

zk24 je offline (nepripojený) zk24

2009 Pozri príspevok
Cez CASE? Priložíš to prosím? Zaujímalo by ma ako si ti to podarilo lebo sa odvolávaš na dva stĺpce a updatovať chceš tretí. Alebo si CASE použila v procedúre? Ja som sa snažila použiť UNION ALL ale to asi funguje iba na selecty. Čo už..
V príspevku 6 som priložila obrázok - kde je vidno aj výsledná tabuľka aj query.
0 0
2009 2009

2009 je offline (nepripojený) 2009

zk24 Pozri príspevok
uz som vyriesila... nie, OR ani AND v tomto pripade nie je vhodne. Aspon jednoduche vlozienie AND medzi dva udpaty nefunguje.

vyriesila som to cez CASE (a vnorene THEN CASE)
Pozor
AND = a zároveň
OR = alebo
0 0
zk24 zk24

zk24 je offline (nepripojený) zk24

To mi je jasné... ale ani jeden z príkazov, ani AND, ani OR neriešil moju situaciu.
0 0
zk24 zk24

zk24 je offline (nepripojený) zk24

Nemyslim tým že AND sa mi nepáči, že chcem to inač. s AND mi to nefunguje, to som skusala ako prve Ked vložím AND medzi dva update príkazy s dvomi where podmienkami tak to nezbehne, vyhodi chybu.
0 0
srska srska

srska je offline (nepripojený) srska

ja žasnem, tak takú debatu by som nečakal. smekám
0 0
sthruska sthruska

sthruska je offline (nepripojený) sthruska

Tak na to by som určite išiel pomocou tých parametrov. Samozrejme v cykle.
Takýto update sa tak či tak nedá urobiť jedným vrzom.
0 0
2009 2009

2009 je offline (nepripojený) 2009

Spýtala som sa kolegu z Besetu. Odpoveď:
Evicka,
je to nezmysel, nemozes to spajat s OR, musis to spustit za sebou ako 2 nezavisle updaty.
Nuž pravda je, že ma v živote (hi teda za tých 16 rokov čo tu robím)nenapadlo spojiť dva updaty v jednom príkaze. To už je na procedúru. Dve rôzne podmienky v jednom update zadávam bežne.
0 0
zk24 zk24

zk24 je offline (nepripojený) zk24

jasné Evi, ja to všetko chápem.

Je to proste len príklad, cvičenie. A hľadala som riešenie. Neexistuje správne a nesprávne. Proste aby sa to dalo cez "jedno F5" zrunnovať.

Ja som vymyslela CASE a vnorené THEN CASE... nevravim ze naefektivnejšie... ale zafungovalo...
0 0
zk24 zk24

zk24 je offline (nepripojený) zk24

sthruska Pozri príspevok
Tak na to by som určite išiel pomocou tých parametrov. Samozrejme v cykle.
Takýto update sa tak či tak nedá urobiť jedným vrzom.
Vieš mi o tom povedať viac?
0 0
2009 2009

2009 je offline (nepripojený) 2009

zk24 Pozri príspevok
jasné Evi, ja to všetko chápem.

Je to proste len príklad, cvičenie. A hľadala som riešenie. Neexistuje správne a nesprávne. Proste aby sa to dalo cez "jedno F5" zrunnovať.

Ja som vymyslela CASE a vnorené THEN CASE... nevravim ze naefektivnejšie... ale zafungovalo...
Šikulka. Dám si túto tému do sledovania možno niečomu priučím.
0 0
2009 2009

2009 je offline (nepripojený) 2009

zk24 Pozri príspevok
Vyriesila som to takto. Nevravím že je to efektívna práca v tomto jednoduchom prípade (jasne ze jednoduchsie by bolo zrunnovat dva samostatne update) ale bol to iba píklad, myslím že využiteľnosť CASE (THEN CASE) je celkom fajn.
Pozrela som si lepšie Tvoj update. Je trošku nebezpečný. Narýchlo som vymyslela príklad. Prispôsob si ho. Ozaj iba narýchlo lebo je piatok a keď chcem odísť z roboty o 14:00 musím makať

update table1
set personal_code = (case WHEN last_name ='jankova' THEN 02 WHEN 'hubata' THEN 03
END)
where last_name in ('jankova','hubata');

Where klauzula je dolezita, aby ti neudatoval ine riadky v tabulke table1, ktore nemaju tieto hodnoty ('jankova','hubata') na NULL!
0 0
Načítať ďalšie

Sleduj porady, ktoré by vás mohli zaujímať