cucumber Posted February 14, 2008 Report Share Posted February 14, 2008 Ir kods mySQL SELECT * FROM `student` LIMIT 20, 10 kads butu tada pasha kods ieksh SQL ? ps. cik saprotu ir SELECT top 2 ... , bet tas nepareizi. Link to comment Share on other sites More sharing options...
Vebers Posted February 14, 2008 Report Share Posted February 14, 2008 Nesapratu ko tu ar to vēlējies pajautāt... Izsakies skaidrāk.. Link to comment Share on other sites More sharing options...
Roze Posted February 14, 2008 Report Share Posted February 14, 2008 MS SQL kā reiz arī tā tikai dara.. tikai TOP taisa divreiz - no priekšas un pakaļas.. + vajag orderējamo lauku. Ja MySQL piemērs ir : SELECT * FROM table ORDER BY id ASC LIMIT 10,20 Tad MS SQL ir kaut kā šitā: select * from ( select top 10 * from ( select top 30 * FROM table ORDER BY id ASC ) order by id desc ) order by id ASC nu ceru ka asc/desc orderi nesajaucu vietām.. Link to comment Share on other sites More sharing options...
Gints Plivna Posted February 14, 2008 Report Share Posted February 14, 2008 Ir kods mySQLSELECT * FROM `student` LIMIT 20, 10 kads butu tada pasha kods ieksh SQL ? ps. cik saprotu ir SELECT top 2 ... , bet tas nepareizi. Pirmkārt SQL or valoda un nevis DBMS. Otrkārt visām DBMS ir versijas, kuras patiešām ir svarīgas, jo ar katru jaunu versiju ir lietas ko var izdarīt vienkāršāk salīdzinot ar vecajām. Tātad, pieņemot, ka runa iet par Microsft SQL Server un versija ir 2005, tad var darīt šādi: WITH ordernr AS (SELECT *, ROW_NUMBER() OVER (order by <kolona>) as row FROM <tabula>) SELECT * FROM ordernr WHERE row between <sākums> and <beigas> Gints Plivna http://datubazes.wordpress.com Link to comment Share on other sites More sharing options...
cucumber Posted February 14, 2008 Author Report Share Posted February 14, 2008 to Roze; select * from ( select top 10 * from ( select top 30 * FROM table ORDER BY id ASC ) a ORDER BY id DESC )b ORDER BY id ASC vajadzeja vel nosaukumus dot, a un b. Link to comment Share on other sites More sharing options...
Roze Posted February 14, 2008 Report Share Posted February 14, 2008 Pirmkārt SQL or valoda un nevis DBMS. Otrkārt visām DBMS ir versijas, kuras patiešām ir svarīgas, jo ar katru jaunu versiju ir lietas ko var izdarīt vienkāršāk salīdzinot ar vecajām.Tātad, pieņemot, ka runa iet par Microsft SQL Server un versija ir 2005, tad var darīt šādi: Zināmu analoģiju var saskatīt ar web-pārlūkiem.. itkā ir kaut kāda zināma "valoda" vai standarti tad patiesībā katrs produkts ir ar niansēm un īsti vairs nevar teikt ka SQL arī Āfrikā ir SQL :) Līdz ar to lai kā piesietos pie vārdiem, manuprāt, vienkāršāk ir prasīt kā to izdarīt konkrētā vidē nevis "in general".. Esmu bakstījes ar kādiem 4-5 ( R )DBMS un visiem šī funkcionalitāte ir savādāka .. kapēc MS un Oracle savos produktos aizvien neievieš kaut ko "draudzīgāku" līdzīgi kā MySQL vai PgSQL izskaidrot nemāku.. Link to comment Share on other sites More sharing options...
Gints Plivna Posted February 14, 2008 Report Share Posted February 14, 2008 Līdz ar to lai kā piesietos pie vārdiem, manuprāt, vienkāršāk ir prasīt kā to izdarīt konkrētā vidē nevis "in general".. Pilnīgi piekrītu, tikai probza jau bija iekš tā, ka to, ka tas ir SQL Serveris, varēja noprast tikai no tā TOP. Nezinu vai vēl kaut kādā citā DB ir TOP, bet šis jautājums bija vienkārši labi jāpārdomā, lai saprastu, kas tad īsti nepieciešams. Tā ir vispār tāda diezgan dīvaina tendence - itin bieži cilvēki iedomājas, ka ja viņi ir stundām/dienām ņēmušies ar to konkrēto jautājumu un ir tieši viena DB ar konkrētu versiju, kurā viņi to grib atrisināt, tad visiem citiem arī automātiski ir skaidra gan DB, gan tās versija. Un tad pārējiem nākas lietot kristāla bumbas un/vai kafijas biezumus :) Esmu bakstījes ar kādiem 4-5 ( R )DBMS un visiem šī funkcionalitāte ir savādāka .. kapēc MS un Oracle savos produktos aizvien neievieš kaut ko "draudzīgāku" līdzīgi kā MySQL vai PgSQL izskaidrot nemāku.. Njā nu iespējams tāpēc, ka gan TOP, gan ROWNUM tika ieviests sen, kad par SQL standartu neviens vēl īsti nelikās zinis, bet šodien ievieš analītiskās (analytic, data analysis) f-jas a la row_number(). Un nekādas nestandarta lietas tādas kā TOP, LIMIT, ROWNUM diez ko neattīstīs un no jauna neieviesīs. Gints Link to comment Share on other sites More sharing options...
Recommended Posts