AcidRain Posted July 7, 2004 Report Share Posted July 7, 2004 Es patiešām neticu, ka nav iespējams izmantojot GROUP BY, sagrupējot vairākus ierakstus, tos sagrupēt nevis pēc pirmā sastaptā ieraksta bet gan pēc pēdējā. Piemēram ja man ir tabula ar `Name` un `Text` laukiem un man ie pieņemsim divi ieraksti 'test','kautkaads texts' un 'test','cits teksts'. Tātad ja es taisīšu vaicājumu SELECT `Name`,`Text` FROM `table` GROUP BY `Name` tas man izdos 'test','kautkaads texts', bet kā lai panāku lai tas man izdod 'test','cits teksts'? Es ceru ka MySQL tomēr ir tāda iespēja, jo negribās taisīt drausmīgākos vaicājumus lai tiktu pie tik vienkāršas lietas. Var gadīties ka to var ļoti labi panākt ar apakšvaicājumiem, bet pagaidām nevaru iebraukt kāda ir viņu pamatdoma īsti. Link to comment Share on other sites More sharing options...
Aleksejs Posted July 7, 2004 Report Share Posted July 7, 2004 A ja uztaisa vēl galā ORDER BY `Text` (ASC/DESC) Link to comment Share on other sites More sharing options...
AcidRain Posted July 8, 2004 Author Report Share Posted July 8, 2004 Tad viņš sakārto to kas beigās iznāk. Bet GROUP taisa tikuntā no augšas uz leju :( Link to comment Share on other sites More sharing options...
bubu Posted July 8, 2004 Report Share Posted July 8, 2004 (edited) Piemēram ja man ir tabula ar `Name` un `Text` laukiem un man ie pieņemsim divi ieraksti 'test','kautkaads texts' un 'test','cits teksts'.Tātad ja es taisīšu vaicājumu SELECT `Name`,`Text` FROM `table` GROUP BY `Name` tas man izdos 'test','kautkaads texts', bet kā lai panāku lai tas man izdod 'test','cits teksts'? A kāda jēga no šī selekta? Parasti jau GROUP BY lieto, lai dabūtu visādas summas, vidējo vērtību, u.c. lietas saistībā ar skaitļiem! Bet ja tu gribi dabūt vienkārši pēdējo ierakstu (pēc alfabēta), kuram Name=' test', tad jau der šāds kverijs: SELECT `Name`, `Text` FROM `table` WHERE Name='test' ORDER BY `Text` DESC LIMIT 1 P.S. rezervētos vārdus kā Text un table labāk nelieto kolonnu/tabulu nosaukumos, tā kverijus varēs rakstīt bez visādām ` pēdiņām. ;) Edited July 8, 2004 by bubu Link to comment Share on other sites More sharing options...
AcidRain Posted July 8, 2004 Author Report Share Posted July 8, 2004 Nē, man vajag grupēt pēc `Name`, bet grupēt tā, lai sagrupējot beigās ir nevis pirmais ieraksts, bet gan pēdējais. Es domāju varbūt ir iespējams kaut kā norādīt, ka MySQL vaicājumu taisa no apakšas uz augšu nevis kā parasti no augšas uz apakšu. Link to comment Share on other sites More sharing options...
des Posted July 8, 2004 Report Share Posted July 8, 2004 Redzi, peec relaacijas definiicijas ir taa, ka ieraksti pashi par sevi tabulaa nekaa nav sakaartoti. Tikai ar visaadiem order by Tu vari panaakt sev veelamo rezultaatu. Un group by tieshaam ir izmantojams tikai pie visaadaam agregaatfunkcijaam, tjipa sum, avg, count.... *** Bet, lai panaaktu to, ko Tu gribi, man domaat, bez subselecta/viewa neiztikt (ar kuriem MySQL pagaidaam veel ir taa pashvakaak) Tjipa tad vareetu pievienot tabulai veel id lauku, kas ir autoincrements. Vispirms noselekteet tabulu, sakaartotu peec id preteejaa virzienaa un tad no taas taisiit Tavu jociigo group by selectu. Aptuveni taa. Link to comment Share on other sites More sharing options...
AcidRain Posted July 8, 2004 Author Report Share Posted July 8, 2004 Es tagad jau atradu citu variantu, kas manā gadījumā derēs, bet baigi žēl, ka nevar sakārtot to ko gribi grupēt un ar tām agregātfunkcijām man īsti neizdevās iegūt vajadzīgo rezultātu. Nācās sadalīt vairākās daļās visu uzdevumu, bet gribējās to visu uzgrūzt tīri uz MySQL, tagad nāksies ar php arī kaut ko padarīt, bet gan jau būs labi :) Link to comment Share on other sites More sharing options...
des Posted July 8, 2004 Report Share Posted July 8, 2004 Ugu, mysql tieshaam visu biezhi nevar tik pat skaisti sagruust vienaa selectaa kaa piemeeram kaada oraclee :) visaadi starprezultaati jaapiefixee ieksh php un jaadarbojas ar vairaakiem selectiem :) mysql baigi pietruukst storeetaas funkcijas un proceduuras :) Link to comment Share on other sites More sharing options...
DimanC Posted July 8, 2004 Report Share Posted July 8, 2004 Ugu, mysql tieshaam visu biezhi nevar tik pat skaisti sagruust vienaa selectaa kaa piemeeram kaada oraclee smile.gif visaadi starprezultaati jaapiefixee ieksh php un jaadarbojas ar vairaakiem selectiem smile.gif mysql baigi pietruukst storeetaas funkcijas un proceduuras smile.gif bez storētajām jau varētu iztikt. tās tomēr lieto ļoti mazs procents cilvju. bet mySQL, cik saprotu, joprojām nav stable versijas ar SUB-Query atbalstu. :( Link to comment Share on other sites More sharing options...
DimanC Posted July 8, 2004 Report Share Posted July 8, 2004 par pašu AcidRain problēmu - ja to nevar atrisināt mySQL līmenī (šoreiz laikam bez sub-query neiztikt), tad vajag atrisināt augstākā līmenī. varbūt problēmu var atrisināt šādi: :unsure: select `name`, `text` from `table` group by `name` order by max(`id`) desc šis gan strādās tikai tādā gadījumā, ja ID tiek piešķirts auto-number, un visu laiku augošā secībā. :P Link to comment Share on other sites More sharing options...
des Posted July 8, 2004 Report Share Posted July 8, 2004 select `name`, `text` from `table` group by `name` order by max(`id`) desc shis gan met aaraaa "invalid use of group function" (vismaz uz versijas 4.0.16) Link to comment Share on other sites More sharing options...
des Posted July 8, 2004 Report Share Posted July 8, 2004 Principaa jau group by savu darbinju izdara pirms order by. Respektiivi tabula kaut kaa ir jaasakaarto ar citu kveriju jau pirms peedeejaa group by izsaukshanas. Vajadziigs subkverijs. (select * from select...) Link to comment Share on other sites More sharing options...
AcidRain Posted July 8, 2004 Author Report Share Posted July 8, 2004 GROUP pildās pirms ORDER, vienīgā iespēja ir HAVING, tā laikam saucās. Link to comment Share on other sites More sharing options...
DimanC Posted July 8, 2004 Report Share Posted July 8, 2004 Principaa jau group by savu darbinju izdara pirms order by.Respektiivi tabula kaut kaa ir jaasakaarto ar citu kveriju jau pirms peedeejaa group by izsaukshanas. Vajadziigs subkverijs. (select * from select...) nepiekritīšu Tev, des. KĀRTOT PIRMS GROUP BY nebūs pareizi, jo imho neviena DB nesaka, kādā secībā iedos sagrupētos rezultātus. manuprāt kārtošana jāveic pēc GROUP BY. Link to comment Share on other sites More sharing options...
DimanC Posted July 8, 2004 Report Share Posted July 8, 2004 shis gan met aaraaa"invalid use of group function" (vismaz uz versijas 4.0.16) nu, te ir kārtējais gadījums, kad mums vajag "apmānīt" mySQL, iekš order lietojot nevis funkciju, bet gan tās alias SELECT count(*), parent_id, max(iest_id) as pedeja_rinda FROM `iestades` group by parent_id order by pedeja_rinda desc tā, lūk :rolleyes: Link to comment Share on other sites More sharing options...
Recommended Posts