Jump to content
php.lv forumi

mysql limit alternativa prieks SQL


cucumber

Recommended Posts

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

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

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.

 

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

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

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

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

×
×
  • Create New...