SQL baze podataka - Sponzor: Baze-Podataka.net MySQL, MSSQL, Oracle, Access, ODBC. Ako imate problem brže i preciznije ćete dobiti odgovor ako priložite strukturu tabela ili skript koji kreira tabele i puni ih test podacima umesto što to problem opisujete samo rečima. Sponzor: Baze-Podataka.net - Blog o bazama podataka |
|
Alati teme | Način prikaza |
|
14. 12. 2012. | #1 |
novi član
Na probnom radu
Datum učlanjenja: 17.05.2012
Poruke: 18
Hvala: 4
0 "Hvala" u 0 poruka
|
IF u SQL upitu
Pozdrav svima,
Imam sledeci problem. Imam slican upit, nemam ga sada pri sebi, ali ide ovako Kôd:
UPDATE tabela SET status = (IF status = 'B', 'N', 'B'), rate = (IF status = 'B', '-100', ''), date = (IF status = 'B', NOW(), '0000-00-00') WHERE country = 'bla bla' Ovde ne valja sledece. Zamislimo da imam 10 unosa, od kojih 2 imaju status B. Kada se izvrsi upit u oba se promeni status u N, ali ostale kolone ne, vec se ponasa kao da ne postoji status B, pa ne upisuje NOW, -100, ali zato obe dobiju N status. Znaci samo prodje ovo status = (IF status = 'B', 'N', 'B'), kako treba dok ostale i ne vidi. Nije mi jasno gde bas gresim i da li mogu da imam ovakav upit sa vise IF iskaza. Znaci upit prodje , izvrsi update ali tacan samo za prvi iskaz. Ja sam mogao to da uradim da vratim prvo niz iz tabele, pa zavisno od statusa napravim novi niz pa uradim update. Ali mislio sam da moze to ovako na jedan upit. |
14. 12. 2012. | #2 |
Aleksandar Janković
Qualified
Datum učlanjenja: 16.10.2010
Lokacija: Bg-Sd
Poruke: 165
Hvala: 70
54 "Hvala" u 36 poruka
|
Pretpostavljam da je bitan redosled setovanja kolumna. Odnosno postavi status na kraj pa probaj.
Ujedno mozes da koristis i ugnjezdene if uslove dakle umesto vrednosti iskoristi jos jedan if.
__________________
ajankovic.com] |
"Hvala" ajankovic za poruku: |
15. 12. 2012. | #3 | |
novi član
Na probnom radu
Datum učlanjenja: 17.05.2012
Poruke: 18
Hvala: 4
0 "Hvala" u 0 poruka
|
Citat:
Ja sam mislio da se updejtuje red po red u bazi, pa da redosled nije bitan... Ovako sta ispada ,da se updejtuje kolona po koloni? |
|
15. 12. 2012. | #4 |
Ivan Dilber
Sir Write-a-Lot
|
mislim da je naprosto fora da on pokupi vrednosti kolona i da onda te "varijable" updejtuje u hodu, kako izvrsava... a definitivno stoji da baza snima updejt red po red, jer je to atomska operacija.
A inace to je feature, a ne bug, jer ti to olaksava neke operacije koje bi inace bile komplikovane, tipa nekih bit maski: ako je uslov A setuj bit 1, ako je uslov B setuj bit 2, itd. Da nema toga morao bi da saljes vise upita za to ili da pravis jako komplikovan SQL..
__________________
Leadership is the art of getting people to want to do what you know must be done. |
"Hvala" ivanhoe za poruku: |
|
|