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
2009 2009

2009 je offline (nepripojený) 2009

alebo miesto CASE použi DECODE
0 0
zk24 zk24

zk24 je offline (nepripojený) zk24

Idem skúšať
0 0
sthruska sthruska

sthruska je offline (nepripojený) sthruska

Je to pre MS Access v Delphi 7. Ako návod by malo stačiť

dMain.cmd1.CommandType := cmdText;
dMain.cmd1.CommandText:= 'UPDATE EscapeRoutes'
+' SET IsNew = :p0'
+' WHERE FSFK = :p1';

while not MyQry.Eof do
begin
dMain.cmd1.Parameters[0].Value := fMain.chkIsNew.Checked;
dMain.cmd1.Parameters[1].Value := MyQry.FieldValues['FireSectionID'];
dMain.cmd1.Execute;
MyQry.Next;
end;
1 0
zk24 zk24

zk24 je offline (nepripojený) zk24

Tak toto je na mňa trošku moc... ale doučím sa
0 0
sthruska sthruska

sthruska je offline (nepripojený) sthruska

Prečo?
Prvá časť len definuje parametre. Prvé dva riadky si nevšímaj.

+' SET IsNew = :p0'
+' WHERE FSFK = :p1';
+' SET IsNew = :p0'
+' WHERE FSFK = :p1';
SET IsNew = :p0'
SET IsNew = :p0'
SET IsNew = :p0' SET IsNew = :p0' UPDATE EscapeRoutes SET IsNew = :p0 WHERE FSFK = :p1

V cykle postupne dosadzuješ hodnoty pre parametre a spustíš samotný príkaz SQL.
0 0
sthruska sthruska

sthruska je offline (nepripojený) sthruska

Prečo?
Prvá časť len definuje parametre. Prvé dva riadky si nevšímaj.

UPDATE EscapeRoutes SET IsNew = :p0 WHERE FSFK = :p1

V cykle postupne dosadzuješ hodnoty pre parametre a spustíš samotný príkaz SQL.

Nejako to blbne
0 0
marjankaj marjankaj

marjankaj je offline (nepripojený) marjankaj

I am a man
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.
A nie je jednoduchšie ten Personal_code zmeniť manuálne v tabuľke, ako takto kvôli každej jednej zmene písať kód?
0 0
sthruska sthruska

sthruska je offline (nepripojený) sthruska

Čo môže urobiť počítač tak nech to robí.
Písala, že sa jedná o cvičenie. Ďalšia vec je, že to chce asi hromadne.
Kód sa generuje automaticky - bez zásahu obsluhy.

Všimol som si jednu vec

update table1
Set personal_code = 03
where first_name = 'petra'
and last_name = ''

Si si istá posledným riadkom? Mne tam pasuje "null". V každom prípade si to musíš správne ošetriť. Záleží od zdroja z ktorého čerpáš hodnoty. Z formulára to môže byť ". Z DB určite "null".
0 0
marjankaj marjankaj

marjankaj je offline (nepripojený) marjankaj

I am a man
sthruska Pozri príspevok
Čo môže urobiť počítač tak nech to robí.
Písala, že sa jedná o cvičenie. Ďalšia vec je, že to chce asi hromadne.
Kód sa generuje automaticky - bez zásahu obsluhy.
Ale niekto predsa musí určiť aká hodnota Personal_code sa má priradiť.
Všimol som si jednu vec

update table1
Set personal_code = 03
where first_name = 'petra'
and last_name = ''

Si si istá posledným riadkom? Mne tam pasuje "null". V každom prípade si to musíš správne ošetriť. Záleží od zdroja z ktorého čerpáš hodnoty. Z formulára to môže byť ". Z DB určite "null".
No ak mám vypisovať takýto kod

Set personal_code = 03
where first_name = 'petra'
namiesto "03" v príslušnom riadku, tak tá automatizácia je akosi náročnejšia.

Takto by som to robil iba pri zmene niekoľkých údajov a nie hromadne. A podľa mena? A čo keď budú rovnaké mená aj priezviská. Volil by som jednoznačnejšie kritérium. Napríklad primárny kľúč.
Naposledy upravil marjankaj : 13.11.11 at 12:02
0 0

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