Forum Sveta kompjutera  

Nazad   Forum Sveta kompjutera > Test Run > Programiranje

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 22.10.2006, 17:42   #1
dziber
Novi član
 
Član od: 22.10.2006.
Poruke: 4
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
Određen forumom Mysql i delete max values...

Jel postoji komanda koja bi trazila najvecu vrednost polja i brisala sve ispod te vrednosti?
dziber je offline   Odgovor sa citatom ove poruke
Stara 22.10.2006, 21:25   #2
holodoc
Deo inventara foruma
 
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
Thumbs up Re: Mysql i delete max values...

Pa ne postoji SQL komanda koja bi automatski radila to što tebi treba već se to radi odgovarajućom konstrukcijom uslovnog „WHERE“ dela SQL komande „DELETE“.

Evo primera kako bi trebala da izgleda SQL upit koji bi trebalo da reši tvoj problem.
Citat:
SQL kaže:
DELETE FROM naziv_tabele
WHERE posmatrana_kolona < (SELECT MAX(posmatrana_kolona) FROM naziv_tabele)
LIMIT 1
Iskreno rečeno neznam zbog čega bi koristio ovakvu logiku rada sa bazom pošto mi se čini da pokušavaš da skladištiš rezultat obrade podatka u nju a ne same podatke što je jedna od velikih grešaka u dizajnu aplikacije tj. same baze.

Ako ti je potrebno da u svojoj aplikaciji koristiš samo zapise koje u odgovarajućem redu sadrže samo maksimalnu vrednost bolje rešenje ti je da koristiš samo jedan SELECT upit kao što je sledeći:
Citat:
SQL kaže:
SELECT kolone_koje_te_interesuju_razdvojene_zarezima
FROM posmatrana_tabela
WHERE posmatrana_kolona = (SELECT MAX(posmatrana_kolona)
FROM naziv_tabele)
LIMIT 1
Na ovaj način ćeš umesto veoma zahtevne „DELETE“ komande (koja zauzima poprilično resursa na SQL serveru u odnosu na ostale komande) i nepotrebnih upita dobiti recordset koji će da sadrži samo zapise sa maksimalnom vrednošću u posmatranoj koloni.

BTW, vodi računa o tome da oba upita mogu da imaju više rezultata pa moraš ili da dodaš neki dodatni uslov u „WHERE“ ili da koristiš „LIMIT“ onako kako misliš da ti najviše odgovara inače ćeš imati problem sa integritetom baze
holodoc je offline   Odgovor sa citatom ove poruke
Stara 23.10.2006, 18:52   #3
dziber
Novi član
 
Član od: 22.10.2006.
Poruke: 4
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
Određen forumom Re: Mysql i delete max values...

U redu ali kako da onda obrisem to sto izvrsi select komanda.

Nije mi najjasnije zato sto bi ja trebo da iz tabele izbrisem podatke.
Nesto sam cacko po netu i naso neke komande sa delete naredbom ali mi
ubije racunar izvrsavanje tenaredbe.

Da li bi mogao nekako sa tvojim primerom select naredbe koju si mi naveo
da precistim iz tabele te podatke koji mi ne trebaju?

I jel postoji nesto sto bi ubrzalo proces brisanja

hvala mnogo

Poslednja ispravka: dziber (23.10.2006 u 19:08)
dziber je offline   Odgovor sa citatom ove poruke
Stara 23.10.2006, 20:02   #4
Marko_L
Mythbuster
 
Član od: 2.11.2005.
Lokacija: Beograd
Poruke: 2.205
Zahvalnice: 38
Zahvaljeno 370 puta na 147 poruka
Slanje poruke preko ICQ-a korisniku Marko_L Slanje poruke preko MSN-a korisniku Marko_L Slanje poruke preko Yahooa korisniku Marko_L Slanje poruke preko Skypea korisniku Marko_L
Određen forumom Re: Mysql i delete max values...

Ako ćeš da brišeš onda koristiš onaj prvi upit koji si dobio, a ako samo hoćeš da prikažeš potrebne podatke koristiš ovaj drugi. Nema treće
Marko_L je offline   Odgovor sa citatom ove poruke
Stara 23.10.2006, 20:14   #5
dziber
Novi član
 
Član od: 22.10.2006.
Poruke: 4
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
Red face Re: Mysql i delete max values...

Ok.
Medjutim kad pokusam prvu nardbu izbacuje mi gresku kao ne mogu
ja da koristim from.
Ne znam sta znaci to ali da to nema veze sa podupitima.
Verzija mysql -a je 4.1
Da li je to kod mene podrzano.

I moze samo jos jedno pitanjce
da li mogu vise naredbi da spakujem u jedan batch file ili samo jednu.
A ako ima nacin koji je. hvala
dziber je offline   Odgovor sa citatom ove poruke
Stara 23.10.2006, 20:52   #6
Marko_L
Mythbuster
 
Član od: 2.11.2005.
Lokacija: Beograd
Poruke: 2.205
Zahvalnice: 38
Zahvaljeno 370 puta na 147 poruka
Slanje poruke preko ICQ-a korisniku Marko_L Slanje poruke preko MSN-a korisniku Marko_L Slanje poruke preko Yahooa korisniku Marko_L Slanje poruke preko Skypea korisniku Marko_L
Određen forumom Re: Mysql i delete max values...

Probaj
Kod:
DELETE * FROM naziv_tabele
WHERE posmatrana_kolona < (SELECT MAX(posmatrana_kolona) FROM naziv_tabele)
LIMIT 1
Marko_L je offline   Odgovor sa citatom ove poruke
Stara 23.10.2006, 20:59   #7
dziber
Novi član
 
Član od: 22.10.2006.
Poruke: 4
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
Određen forumom Re: Mysql i delete max values...

uradio sam to i opet mi izbaci sledecu poruku:

ERROR 1093 at line 1: you can't specify target 'mojatabela' for update in FROM clause

isto ovo mi izbaci i za onu ranije komandu gde se mesto < koristilo =
dziber je offline   Odgovor sa citatom ove poruke
Stara 23.10.2006, 23:16   #8
holodoc
Deo inventara foruma
 
Član od: 5.12.2005.
Poruke: 6.785
Zahvalnice: 348
Zahvaljeno 1.893 puta na 1.078 poruka
Određen forumom Re: Mysql i delete max values...

Ukoliko u toku rada sa MySQL-om naletiš na neki problem najbolje ti je da konsultuješ MySQL online dokumentaciju gde ćeš sigurno naći rešenje za svoj problem.

Što se tiče tvog konkretnog problema baci pogle ovde:

http://bugs.mysql.com/bug.php?id=6980

Na osnovu informacija na ovoj stranici (u slučaju da ti lično nisi napravio neku grešku u radu) najverovatnije imaš problema sa verzijom koju koristiš pa ne bi bilo loše da pokušaš sa nekom novijom verzijom. Ako budeš imao problema sa određenim kombinacijama Appache-a, MySQL-a i PHP-a (pretpostavljam da ti ovo treba za neki sajt) onda je najbolje da instaliraš XAMPP paket i da te ne boli glava.

Što se tiče drugog pitanja, sve komande možeš bez problema da pokreneš iz nekog tekstualnog fajla koji sadrži SQL naredbe. Pokretanje možeš da vršiš na dva načina i to u slučaju da si već logovan na mysql server i u slučaju da nisi. U prvom slučaju dovoljno je da ukucaš sledeći red:
Kod:
source putanja_i_naziv_fajla_koji_sadrzi_komande
Upamti da ovo možeš da radiš samo ako si ulogovan tj. imaš odzivni znak servera ("mysql>").

U drugom, relativno upotrebljivijem slučaju moraš da kucaš sledeći oblik komande:
Kod:
mysql < source putanja_i_naziv_fajla_koji_sadrzi_komande -u[korisnicko_ime] -p[lozinka]
Primera radi ako ti se komande nalaze u fajlu "komande.sql", korisničko ime ti he "root" i lozinka "stargazer" linija koju treba da izvršiš je:
Kod:
mysql < komande.sql -uroot -pstargazer
Korisničko ime i lozinku sam stavio da ne bi bilo potrebe da u zasebnoj liniji kucaš lozinku ako ovu komandnu liniju pozivaš iz neke aplikacije.
holodoc je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
[PHP ] Problem sa konektovanjem na MySQL bazu. nighthawk Serverske aplikacije i baze podataka 4 29.12.2006 15:15
MySql problem sa logovanjem na server Tagwer Programiranje 1 26.2.2006 14:16
MYSQL pitanje grobar Programiranje 3 22.1.2006 21:48


Sva vremena su po Griniču +2 h. Sada je 11:19.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2019, vBulletin Solutions, Inc.
Hosted by Beograd.com