Dooling Posted June 20, 2007 Report Posted June 20, 2007 Ir šāds vaicājums SELECT * FROM `temp_videjie` order by procenti asc limit 3 Tas atgriež vērtības: 51.36 52.78 54 Man vajag, lai atgriež šādas vērtības: 54 52.78 51.36 Pagaidām doma ir izveidot View'u un tad sakārtot datus kā nepieciešams. Bet jautājums vai var modificējot to vaicājumu, kurš ir augstāk, panākt man vēlamo rezultātu?
Val Posted June 20, 2007 Report Posted June 20, 2007 ko tad īsti vajag? trīs mazākās vērtības no visas tabulas?
Dooling Posted June 20, 2007 Author Report Posted June 20, 2007 jā, trīs mazākās ... sagrupētas no labākās uz sliktāko
v3rb0 Posted June 20, 2007 Report Posted June 20, 2007 atlasi 3 mazākās kā jau dari, un apgried to listi otrādi php pusē (tur takš tikai 3 ieraksti). ar sql ka tik nevajadzēs selectu no selecta.
Val Posted June 20, 2007 Report Posted June 20, 2007 (edited) select maz.procenti from (select procenti from temp_videjie order by procenti asc limit 3) as maz order by procenti desc Edited June 20, 2007 by Val
Dooling Posted June 21, 2007 Author Report Posted June 21, 2007 (edited) Val variants stradā. Bet es vakar izveidoju savādāku risinājumu. $sql_limitam="SELECT procenti FROM temp_videjie"; $vaicajums_limitam=mysql_query($sql_limitam); $limit = mysql_num_rows($vaicajums_limitam); $limit = $limit - 3; if($limit<0) { $limit = 0; } $antitop3 = "SELECT procenti FROM temp_videjie order by procenti desc limit $limit, 3"; Edited June 21, 2007 by Dooling
larvae Posted June 21, 2007 Report Posted June 21, 2007 SELECT * FROM (SELECT * FROM temp_videjie ORDER BY procenti ASC LIMIT 3) ORDER BY procenti DESC Moš tur aliasu kādu vajadzēs, bet ideju saprast var...
Val Posted June 21, 2007 Report Posted June 21, 2007 Tiešām moš vajag. Tas pats jau vien ir domāts...
GedroX Posted June 21, 2007 Report Posted June 21, 2007 (edited) Nafig 3 ierakstu dēļ tā čakarēties. Uzliec array_reverse un miers. :/ Val variants stradā. Bet es vakar izveidoju savādāku risinājumu. $sql_limitam="SELECT procenti FROM temp_videjie"; $vaicajums_limitam=mysql_query($sql_limitam); $limit = mysql_num_rows($vaicajums_limitam); $limit = $limit - 3; if($limit<0) { $limit = 0; } $antitop3 = "SELECT procenti FROM temp_videjie order by procenti desc limit $limit, 3"; Galīgi nepareizi. Pirmkārt 1 vaicājums vienmēr ir labāk par 2. Otrkārt starp šiem vaicājumiem tabulā var tikt ierakstīti jauni ieraksti vai izdzēsti vecie un saņemtie dati vairs nebūs pareizi. Edited June 21, 2007 by GedroX
Roze Posted June 21, 2007 Report Posted June 21, 2007 Galīgi nepareizi. Pirmkārt 1 vaicājums vienmēr ir labāk par 2. Ne par konkrēto gadijumu, taču šis apgalvojums ir nekorekts.. Vienmēr tā nav gan - proti divi simple vaicājumi var būt krietni labāk (no performances u.c. viedokļa) nekā salikts (kešojas, labāk izmantojas indeksi utt).
GedroX Posted June 22, 2007 Report Posted June 22, 2007 (edited) Nu nav arī caur pakaļu vaicājumi jāraksta. Šajā gadījumā 2 nu toč nav vajadzīgi. Īpaši tādā izskatā. Roze, uzrādi, lūdzu, kādu piemēru, kad divi vaicājumi ir labāk par vienu vaicājumu vai kādu vienu sql funkciju. ;) Edited June 22, 2007 by GedroX
Recommended Posts