heqteyur يوللانغان ۋاقتى 2014-5-20 10:43:12

MS SQL دا بەت ئايرىپ ئۇچۇر ئېلىش

بۇ يازمىنى ئاخىرىدا   heqteyur تەھرىرلىگەن. ۋاقتى  2014-5-20 10:44  

ساندان جەدىۋىلىدىكى ئۇچۇرلارنى بەت ئايرىپ ئوقۇپ ئېلىش تور پروگراممىسىدا ۋە ئۇچۇر سىغىمى ناھايىتى چوڭ بولغان ئەھۋاللاردا ئۈستەل پروگراممىسىدىمۇ ناھايىتى كۆپ قوللىنىلىدىغان زۆرۈر تېخنىكىلارنىڭ بىرى، ئەگەر سىز بۇرۇن php, mysql مۇھىتىدا بۇ ئىشلارنى قىلىپ كەلگەن بولسىڭىز، مىكروسوفت دۇنياسىغا مەرھابالار بولسۇن، بۇ يەردە ئۇنداق «ئاسان ئىش» يوق، يەنى mysql دا پەقەت بىرلا Limit فۇنكىسىيەسىدىن پايدىلىنىپ ئەمەلگە ئاشۇرغان بولسىڭىز، ms sql ئۇنداق مەخسۇس بەت ئايرىپ ئوقۇش ئۈچۈن لايىھىلەنگەن فۇنكىسىيە يوق (مەن ماتېرىيال ئاختۇرۇپمۇ تاپالمىدىم….) ، ئۇنداقتا  ms sql دا قانداق قىلىمىز؟! ئەلۋەتتە بىر ئاماللار بىلەن Limit بولمىسىمۇ قىلغىلى بولىدۇ، پەقەت sql جۈملىسى بىر ئاز مۇرەككەپلىشىدۇ خالاس، چۈنكى ms sql دا Limit بولمىغان بىلەن top بار، يەنى جۈملىنى مۇنداق يازىمىز:
SELECT TOP 5 * FROM Jediwel_Nami where ID not in (select top (5*0) ID from Jediwel_Nami order by ID desc ) order by ID descيۇقارقى جۈملە ئارقىلىق كۆرسىتىلگەن جەدىۋەلدىن 1-بەت ئۇچۇرنى ، بەتتىكى ئۇچۇر سانى 5 قۇر ھالەتتە ئوقۇپ ئالىمىز، ئەگەر ھەر بىر بەتتىكى ئۇچۇر سانى ۋە بەت سانىنى تەڭشىمەكچى بولساق جۈملىدىكى سانلارنى تەڭشىسەكلا بولىدۇ.
ئەلۋەتتە بۇ بىردىن بىر ئۇسۇل ئەمەس، يەنە باشقا ئۇسۇللارمۇ بار، مەن پەقەت مۇشۇ خىل ئۇسۇلنى ئەڭ قولاي كۆردۈم. يۇقارقى جۈملىنىڭ نورمال ئىشلىشى ئۈچۈن جەدىۋەلدە چوقۇم ID ستونى بولۇش كېرەك، ئەلۋەتتە قانداق ئەھۋالدا ID قىلماي جەدىۋەل قۇرۇپ سالىدىغان ئىش بار؟! بۇنى مەن ئويلاپ يېتەلمىدىم، دېمەك بۇ جۈملىنىڭ ئاممىبابلىقى يەنىلا كۆپ يۇقۇرى.

http://www.koklen.net/?p=194

kokkaptar يوللانغان ۋاقتى 2014-5-20 22:12:59

مەن ID نىڭ يۇقۇرى تۆۋەنلىكى بويىچە شەرت قويۇپ ئىزدەيدىكەنمەن. :lol

GoodLuck يوللانغان ۋاقتى 2014-5-21 07:41:28

كەپتەكا بۇ جۈملىدىمۇ  ID نىڭ يۇقىرى تۆۋەنلىك تىزىلىش باركەن، ئاخىرىغا قارىسىلا.
يەنە ئازراق قوشۇمچە قىلىپ قويسام، يۇقارقى جۈملىدىكى 0*5 تىكى 0 بولسا بەت سانىنى كۆرسىتىدۇ، يەنى قانچىنچى بەتنىڭ ئۇچۇرىنى ئالماق بولساق 0 نىڭ قىممىتى شۇ بولىدۇ، يۇقارقىسى بىرىنچى بەتنىڭ ئۇچۇرىنى ئالىدىغان جۈملە، ئەگەر ئىككىنچى بەتكە ئېرىشمەك بولساق، 1*5 قىلىپ يازىمىز.

GoodLuck يوللانغان ۋاقتى 2014-5-21 07:45:59

بۇ جۈملە مۇنداق بولغاندا تېخىمۇ مۇكەممەل بولىدۇ:SELECT TOP 5 * FROM Jediwel_Nami where ID not in (select top (5*(pageNum-1)) ID from Jediwel_Nami order by ID desc ) order by ID descبۇ يەردىكى pageNum نۆۋەتتىكى بەت نومۇرىنى كۆرسىتىدۇ، بەت ئۆرىگەن ۋاقىتتا pageNum غا ئۆرىمەكچى بولغان بەتنىڭ نومۇرىنى بەرسەك بولىدۇ، 5 نى بىر ئۆزگەرگۈچىگە بېرىپ، بىر بەتتە كۆرسەتمەكچى بولغان ئۇچۇرنىڭ سانىنىمۇ كونترول قىلغىلى بولىدۇ.
يۇقارقى جۈملىگە ئازراق گۇمانىم بار، سەل تۇرۇپ كومپيۇتېرىمنى مالتىلاپ باقاي، توغرا بولسا مەيلى، خاتا بولسا تۈزىتىپ قويىمەن.
ھېلىغىچە مۇشۇ تېما ئاستىغا كۆپ ئىشلىتىلىدىغان SQL جۈمىللىرىدىن بىر قانچىنى يوللاپ قوياي.

heqteyur يوللانغان ۋاقتى 2014-5-21 08:18:05

GoodLuck يوللىغان ۋاقتى  2014-5-21 07:45 static/image/common/back.gif
بۇ جۈملە مۇنداق بولغاندا تېخىمۇ مۇكەممەل بولىدۇ:بۇ يەر ...

گۇمان بولسا ياخشى، بىرگە تەھلىل قىلىمىز، :lol
مەن ئەمەلىي پروگراممىدا ئىشلىتىپ كەتتىم بۇ جۈملىنى، ھازىرچە نورمالسىزلىق بايقىمىدىم،
سىناپ بېقىپ نورمالسىزلىق بولسا ھايت دەۋەتكەن بولسىڭىز، پروگراممىدىن نورمالسىزلىق چىقىپ سەتلىشىپ يۈرمەي ئەمدى. :L

heqteyur يوللانغان ۋاقتى 2014-5-21 08:19:49

kokkaptar يوللىغان ۋاقتى  2014-5-20 22:12 static/image/common/back.gif
مەن ID نىڭ يۇقۇرى تۆۋەنلىكى بويىچە شەرت قويۇپ ئىزدەيدىك ...

ئۇچۇرلارنى بەتلەرگە بۆلۈپ بەت بەت بويىچە كۆرسەتمەكچى بولغاندا مۇشۇنداقراق ئۇسۇلدىن پايدىلىنىشقا توغرا كېلىدىكەن.

kokkaptar يوللانغان ۋاقتى 2014-5-21 14:35:14

مىكروسوفتقا ئەقلىم ھەيران، ئوخشاش بىر SQL تىلى،  MySQL ياكى Oracle قاتارلىقلاردا ئىشلەتكەن گىرامماتىكىنى MSSQL, Access لاردا ئىشلىمەيدۇ. :(

kokkaptar يوللانغان ۋاقتى 2014-5-21 14:41:57

GoodLuck يوللىغان ۋاقتى  2014-5-21 07:41 static/image/common/back.gif
كەپتەكا بۇ جۈملىدىمۇ  ID نىڭ يۇقىرى تۆۋەنلىك تىزىلىش با ...

مەن ID مانچىدىن مانچىغىچە دەپلا ئالىمەن.
ئادەتتە بۇنداق مەشخۇلاتنى بەتتە ئوقۇپ چىقىرىشقا جىق ئىشلەتمەيمىز، سانلىق مەلۇمات تارتىپ چىقىرىشقىلغا ئىشلىتىمىز، شۇڭا جۈملە يىزىپ قىينىلىپ يۈرمەي، Navicat قاتارلىق قوراللاردا سانداننى ئوقۇسا، بەت ئايرىش دىگەندەك ئىشلارنى ئاسان بىر تەرەپ قىلغىلى بولىدۇ.

heqteyur يوللانغان ۋاقتى 2014-5-21 16:16:30

kokkaptar يوللىغان ۋاقتى  2014-5-21 14:35 static/image/common/back.gif
مىكروسوفتقا ئەقلىم ھەيران، ئوخشاش بىر SQL تىلى،  MySQL ياك ...

مەنمۇ قاتتىق ھەيران قالىمەن مۇشۇ كىروسوفتقا، نۇرغۇن سۆزلىرىم بارئىدى چىكسىدىن نۇقۇپ تۇرۇپ دەيدىغان....;P
بەت: [1]
: MS SQL دا بەت ئايرىپ ئۇچۇر ئېلىش