Zanima me kako bi iz MsSQL baze dobil limit. Naprimer zapise od 20 do 30.
V MySQL se je to nardilo takole: SELECT .... LIMIT 20, 10
Kaj pa tukej?
Avtor: fora, objavljeno na portalu SloDug.si (Arhiv)
Zanima me kako bi iz MsSQL baze dobil limit. Naprimer zapise od 20 do 30.
V MySQL se je to nardilo takole: SELECT .... LIMIT 20, 10
Kaj pa tukej?
spirit1 - četrtek, 11. januar 2007
na 2k5 ti tole vrne samo za dbo-jeve tabele.najbolj tocno je skor tole:ss2k:EXEC sp_MSforeachtable 'SELECT ''?'' as TableName, count(*) as RowCnt FROM ?' ss2k5: EXEC sys.sp_MSforeachtable 'SELECT ''?'' as TableName, count(*) as RowCnt FROM ?'
bojanv - četrtek, 11. januar 2007
SELECT [TableName] = so.name, [RowCount] = MAX(si.rows) FROM sysobjects so, sysindexes si WHERE so.xtype = 'U' AND si.id = OBJECT_ID(so.name) GROUP BY so.name ORDER BY 2 DESCČeprav to ni najbolj natančno, kolkr vem, ker se ne update-a redno.....
o-MA-n-tjaz - četrtek, 11. januar 2007
Še eno vprašanje. Kako bi napisati select stavek, ki bi vrnil imena vseh tabel v bazi in count za vsako tabelo? Lp,Matjaž
ExAmigan - četrtek, 11. januar 2007
V spodaj krepko označeni vrstici namesto zvezdice naštej stolpce, ki jih želiš dobiti vrnjene, pa bo.WITH OrderedCompany AS (SELECT *, ROW_NUMBER() OVER (ORDER BY CompanyId) AS RowNumber FROM Company)SELECT *FROM OrderedCompanyWHERE RowNumber BETWEEN 20 AND 30
o-MA-n-tjaz - četrtek, 11. januar 2007
Mislil sem če se da spodnji select poptavit tako, da ne bo vračal ROW_NUMBER(). WITH OrderedCompany AS (SELECT *, ROW_NUMBER() OVER (ORDER BY CompanyId) AS RowNumber FROM Company)SELECT *FROM OrderedCompanyWHERE RowNumber BETWEEN 20 AND 30 Lp,Matjaž
bojanv - četrtek, 11. januar 2007
select fieldname1, fieldname2,...,fieldnamen from tablename where desiredField between somevalue1 and somevalue2Al si kaj drugega mislil?
o-MA-n-tjaz - četrtek, 11. januar 2007
Se da ta select popraviti tako, da ne bo vračal ROW_NUMBER()? Matjaž
bojanv - torek, 02. januar 2007
LOL
spirit1 - torek, 02. januar 2007
sej vem kaj je mislil... ampak morm ga mal... da ne zarjavi
bojanv - ponedeljek, 01. januar 2007
Primož, se strinjam s tvojo izjavo.....
PRiMoZ - ponedeljek, 01. januar 2007
spirit1:Bojan, v imenu vseh developerjev te lepo prosim da ne prenasas vec 10.000 vrstic po mrezi lepo prosim... Saj bojan verjetno ni mislil prenašat teh 10.000 vrstič po mreži ampak nardit paging po teh vrsticah s pomočjo ROW_NUMBER()ja.
spirit1 - petek, 29. december 2006
Bojan, v imenu vseh developerjev te lepo prosim da ne prenasas vec 10.000 vrstic po mrezi lepo prosim...
AndrejT - sreda, 27. december 2006
Mislim, da je tole več zmagovalna kombinacija, sploh če jo primerjaš s prenosom in keširanjem vseh zapisov za paging. Joini in Viewi, če so prav spisani, ne bi smeli predstavljati kakšne večje izgube; za popolno ugodje (in za ceno nekaj malega prostora na strežniku) pa lahko oštevilčeno tabelo zapišeš kot indeksiran view...
bojanv - sreda, 27. december 2006
Superca...mel sem v mislih par 10 tisoč zapisov....zanimalo me je, če mi bo delal probleme zarad custom paging-a, ker bi to uporabil v eni izmed svojih kontrol pa me je zanimalo, kok me bo to koštalo dodatnega časa izvajanja (če upoštevam še join-e in view-e).....
spirit1 - sreda, 27. december 2006
definiraj ogromno zapisov cez milijon zapisov ga sigurno ne bos sel delat...ce rabis numbering v aplikaciji se to dela v front endu.drugace pa ni nek hudo performancni problem
bojanv - sreda, 27. december 2006
kok je pa tale ROW_NUMBER() perfomančno problem? Recimo, če bi imel ogromno zapisov? Ga kdo uporablja v svojih aplikacijah pa je mel kaj problemov z njim? (počasnost, itd.)
AndrejT - petek, 22. december 2006
Če uporabljaš MSSQL2005, bi ekvivalent LIMITu lahko izgledal takole (da ne uporabljaš pogoja po polju, temveč po zaporedni številki zapisa):WITH OrderedCompany AS (SELECT *, ROW_NUMBER() OVER (ORDER BY CompanyId) AS RowNumber FROM Company)SELECT *FROM OrderedCompanyWHERE RowNumber BETWEEN 20 AND 30
bojanv - petek, 22. december 2006
Lahko uporabiš BETWEEN stavek, če želiš kakšen range zapisov ven dobit. Primer uporabe tukaj.