|
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 |
10. 09. 2010. | #1 |
profesionalac
Qualified
Datum učlanjenja: 02.05.2009
Poruke: 193
Hvala: 27
8 "Hvala" u 6 poruka
|
Problem oko sortiranja proizvoda, za dve cene!
Polja u bazi za cene su
CENA - za upis regularne cene CENA1 - za upis akcijske cene Imam listu proizvoda, npr njih 100 i ako npr 3 od tih proizvoda imaju i regularnu cenu i akc. cenu (npr duplo manu od regularne). Prilikom izlistavanja i sortiranja npr sa "ORDER BY cena ASC" izlista mi sve proizvode od najmanje cene ka najvisoj, zanemarujuci akc. cenu za tri proizvoda. Proizvodi sa akc. cenama bi trebali da budu postavljeni u blizini proizvoda cija je regularna cena priblizna akcijskoj ceni. Sa ovim jednostavnim upitom koji sadrzi samo ORDER BY cena ASC, sortira i proizvode na akciji po njihovoj staroj ceni. Kako da ovo malo iskomplikujem, odnosno da ukljucim i akcijsku cenu u sortiranje i da postavi odredjeni proizvod po vrednosti akc. cene? |
10. 09. 2010. | #2 |
Banned
Expert
Datum učlanjenja: 29.09.2007
Poruke: 458
Hvala: 131
71 "Hvala" u 44 poruka
|
Dodaš u upitu if(reg_cena < auk_cena, reg_cena, auk_cena) as prava_cena
Select *, if(reg_cena < auk_cena, reg_cena, auk_cena) as prava_cena from proizvod ORDER BY prava_cena DESC; |
10. 09. 2010. | #3 |
Dusko Petrovic
Professional
|
ako sam te dobro razumeo ovako neshto bi trebalo da ti radi posao
Kôd:
SELECT *, GREATEST(cena, cena1) as max_cena FROM proizvodi ORDER BY max_cena ASC
__________________
I know it all, I just can't remember it all at once Blog / Pisanije / Best Engagement Rings / Blues DVDs |
10. 09. 2010. | #4 |
Ivan Dilber
Sir Write-a-Lot
|
^^ treba valjda LEAST() ?
mada tu ima problem jer ako nije setovana cena1 onda je ili 0 ili NULL i bice ispred one gde je vrednost setovana.. ja bih to ovako: Kôd:
SELECT *, IFNULL(cena1, cena) AS trenutna_cena FROM proizvodi ORDER BY trenutna_cena
__________________
Leadership is the art of getting people to want to do what you know must be done. Poslednja izmena od ivanhoe : 10. 09. 2010. u 18:59. |
10. 09. 2010. | #5 |
profesionalac
Qualified
Datum učlanjenja: 02.05.2009
Poruke: 193
Hvala: 27
8 "Hvala" u 6 poruka
|
Hvala vam na odgovorima!
probao sam: PHP kôd:
PHP kôd:
I jedno i drugo rade kad probam kod mene na localhostu, sa manjim brojem upisa, ali na severu gde je veci broj upisa, preko 100, ne zavrsi mi posao, ne znam zato. Ovo sto je @ivanhoe predlozio, probao sam da postavim da po defaultu ako nema cene1 da bude NULL, ali nisam uspeo da nateram da radi (ovo sa IFNULL) dok ovo sa LEAST() sam pokrenuo, kao sto sam napisao. Konkretno se radi o ovom slucaju: http://www.inelektronic.com/proizvod...44.html/-4-24/ Videcete gde je naniza akc. cena 27.990,00 ali je proizvod postavljen medju ostalim proizvodima gde je cena oko 29 hiljade Poslednja izmena od martinluter : 10. 09. 2010. u 22:01. |
10. 09. 2010. | #7 |
Ivan Dilber
Sir Write-a-Lot
|
koja je baza u pitanju? jel mysql i koja verzija?
ja sam upravo probao i meni lepo sortira...
__________________
Leadership is the art of getting people to want to do what you know must be done. |
10. 09. 2010. | #8 |
profesionalac
Qualified
Datum učlanjenja: 02.05.2009
Poruke: 193
Hvala: 27
8 "Hvala" u 6 poruka
|
Baza je MySQL, a verzija: Верзија MySQL клијента: 5.0.67 (kod mene na kompu)
Preuzeo sam i sve upise sa servera i prebacio u localhost bazu i sto se ponasa kako i na serveru. Ovako otprilike izgleda tabela: Kôd:
CREATE TABLE IF NOT EXISTS `proizvodi` ( `id` int(10) NOT NULL auto_increment, `naslov` varchar(200) collate utf8_unicode_ci default NULL, `opis` text collate utf8_unicode_ci, `slika` varchar(50) collate utf8_unicode_ci default NULL, `datum` date NOT NULL default '0000-00-00', `akt` char(1) collate utf8_unicode_ci NOT NULL default '', `cena` float(20,2) NOT NULL, `cena1` float(20,2) default NULL, `nalageru` int(1) NOT NULL, `katid` int(10) NOT NULL, `br_pregleda` int(20) NOT NULL, PRIMARY KEY (`id`), KEY `katid` (`katid`), KEY `idfirme` (`idfirme`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3120 ; |
10. 09. 2010. | #9 |
Ivan Dilber
Sir Write-a-Lot
|
izbacio sam iz tabele sva nebitna polja, ostavio samo id, cena i cena1 da bi bilo jasnije:
Kôd:
-- dodao neke proizvode, 2 proizvoda su na akciji i imaju snizenu cenu INSERT INTO `proizvodi` (cena, cena1) values (1,NULL),(3,NULL),(5.50, NULL),(9, NULL),(15, 9.95),(10, 7.25),(25, NULL); mysql> select * from proizvodi; +----+-------+-------+ | id | cena | cena1 | +----+-------+-------+ | 1 | 1.00 | NULL | | 2 | 3.00 | NULL | | 3 | 5.50 | NULL | | 4 | 9.00 | NULL | | 5 | 15.00 | 9.95 | | 6 | 10.00 | 7.25 | | 7 | 25.00 | NULL | +----+-------+-------+ 7 rows in set (0.00 sec) -- i sad kad pozovem onaj upit: mysql> SELECT *, IFNULL(cena1, cena) AS trenutna_cena FROM proizvodi ORDER BY trenutna_cena; +----+-------+-------+---------------+ | id | cena | cena1 | trenutna_cena | +----+-------+-------+---------------+ | 1 | 1.00 | NULL | 1.00 | | 2 | 3.00 | NULL | 3.00 | | 3 | 5.50 | NULL | 5.50 | | 6 | 10.00 | 7.25 | 7.25 | | 4 | 9.00 | NULL | 9.00 | | 5 | 15.00 | 9.95 | 9.95 | | 7 | 25.00 | NULL | 25.00 | +----+-------+-------+---------------+ 7 rows in set (0.00 sec) ovo je na windowsu, server version: 5.1.40-community MySQL Community Server (GPL)
__________________
Leadership is the art of getting people to want to do what you know must be done. Poslednja izmena od ivanhoe : 10. 09. 2010. u 23:40. |
"Hvala" ivanhoe za poruku: |
11. 09. 2010. | #10 |
profesionalac
Qualified
Datum učlanjenja: 02.05.2009
Poruke: 193
Hvala: 27
8 "Hvala" u 6 poruka
|
Da, u pravu si bio @ivanhoe, radi ovo.
Hvala ti! Primenio sam ovo sto si ti napisao na zeljenoj tebeli na localhostu, kad sam vrednosti za cena1 0.00 setova u NULL, tad je proradilo. Samo sad mi se javlja problem, ne mogu na serveru, na sajtu da postavim NULL umesto 0.00, pa mi zato ne radi. U svakom slucaju hvala ti! |
|
|
Slične teme | ||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
Prodaja digitalnih proizvoda | mangia | Web aplikacije, web servisi i software | 8 | 15. 09. 2010. 22:15 |
Fotograf za slikanje proizvoda za katalog? | f14Tr0n | Poslovne ponude i zapošljavanje | 2 | 15. 07. 2010. 12:22 |
Marketing IT proizvoda :) | Vladimir Rodic | Opušteno | 0 | 11. 09. 2008. 16:43 |
Izvoz usluga i softverskih proizvoda | Bokid | e-Business | 1 | 03. 05. 2007. 16:09 |