Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

select top n, pitanje vezano uz nešto slično tome!!!!

[es] :: MS SQL :: select top n, pitanje vezano uz nešto slično tome!!!!

[ Pregleda: 2356 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

roberto555
Croatia

Član broj: 64744
Poruke: 451
*.adsl.net.t-com.hr.



Profil

icon select top n, pitanje vezano uz nešto slično tome!!!!11.12.2006. u 13:47 - pre 211 meseci
pozdrav,
ne znam dal postoji uopće ovo što mislim, select top n ..... vrača prvih n zapisa iz rezultata, dal postoji da dobijem recimo od - do zapisa?? kako je tu prvih 100 npr. da dobijem recimo od 50-100, a ako slučajno nema toliko da onda nije ništa,,,ili tako nešto, samo tako pitam budući da nisam sig.dal to uopće postoji!!!?

hvala!


----Roberto----
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: select top n, pitanje vezano uz nešto slično tome!!!!11.12.2006. u 14:13 - pre 211 meseci
Naravno da moze, ali nije trivijalno. Prvo, tabela iz koj izvlacis redove mora biti takva da se redovi mogu sortitrati po nekoj kolni ili kobinaciji kolona. Posao onda radis u dva koraka. Prvi korak jeste da sortiras tabelu kako zelis i da za svaki red izracunas njegovu poziciju u tom sortu. To se postize upotrebom correlated subqueries. Drugi korak: nad tim datasetu koji je sortiran i ima izracunat redosled jednostavno odradis

SELECT .. FROM <Sortirani dataset> WHERE Redosled BETWEEN a NAD b

Gde je trik? U correlated subquery, a to verujem ima u knjigama negde. Dalje, u prvom koraku kreiras neki SELECT statemet koji ti izracunava redosled. On ti treba u drugom koraku. Negde moras da ga cuvas u medjuvremenu. Ili ces ga casuvati kao view, ili ces ga koristiti kao deo finalnog SELECta. Drugi nacin daje veliki i za pocetnika nepregledan select tipa

SELECT FROM A (SELCT FROM B (SELECT FROM C))

Verzijaj MS SQL 2005 cini mi se ima i nesto sto se zove RANK i moglo bi da resi problem, pa proveri i to, mozda moze.
 
Odgovor na temu

Fedya
Fedor Hajdu
Solution Architect
Emaratech
Dubai, UAE

Član broj: 28246
Poruke: 790
*.static.sbb.co.yu.

Jabber: fedya@elitesecurity.org
Sajt: devtechgroup.com


+34 Profil

icon Re: select top n, pitanje vezano uz nešto slično tome!!!!11.12.2006. u 14:42 - pre 211 meseci
Moram da priznam da nisam bas najbolje shvatio ovo Zidarevo resenje.

Jednom sam imao slican problem i resio sam ga preko privremene tabele koja ima IDENTITY kolonu i posle cupam vrednosti izmedju.
Every hamster has his day.
 
Odgovor na temu

roberto555
Croatia

Član broj: 64744
Poruke: 451
*.adsl.net.t-com.hr.



Profil

icon Re: select top n, pitanje vezano uz nešto slično tome!!!!11.12.2006. u 15:11 - pre 211 meseci
Code:

WITH os AS (SELECT     ID, ime, prezime, grupa, ROW_NUMBER() OVER (ORDER BY id) AS RowNumber
FROM         osoba)
    SELECT     *
     FROM         os
     WHERE     RowNumber BETWEEN 5 AND 10;


eto probao sam, osoba je neka tabela bezvezna sa kolonama (id,ime,prezime i grupa), i radi dobro ovo, no dobro si rekao ima i RANK() no nisam skužio još kako da proradi, ima i NTILE () , umjesto ROW_NUMBER() ,čemu služi PARTITION BY ?? (nema ga ovdje al našao sam nekih pr.gdje se koristi), i ako može netko detaljnije pojasniti OVER? našao sam primjera gdje se koristi uz neke funkcije (sum,avg count,min max....)
----Roberto----
 
Odgovor na temu

Fedya
Fedor Hajdu
Solution Architect
Emaratech
Dubai, UAE

Član broj: 28246
Poruke: 790
*.static.sbb.co.yu.

Jabber: fedya@elitesecurity.org
Sajt: devtechgroup.com


+34 Profil

icon Re: select top n, pitanje vezano uz nešto slično tome!!!!11.12.2006. u 15:30 - pre 211 meseci
Citat:
roberto555: čemu služi PARTITION BY ?? (nema ga ovdje al našao sam nekih pr.gdje se koristi), i ako može netko detaljnije pojasniti OVER? našao sam primjera gdje se koristi uz neke funkcije (sum,avg count,min max....)


Partition By sluzi za definisanje particija jako velikih tabela (npr. da bi se ostvario paging kod web aplikacija), kada se zbog velicine ne moze vratiti cela tabela vec samo odredjeni broj zapisa.

Sto se OVER-a tice, nisam se jos sreo sa tom kljucnom recju. Mozes li dati primer gde se koristi?

sto se resenja tice sto ne probas:
create table #temp (redniBroj int identity, [tvoje kolone ukljucujuci id])

insert into #temp
select id, prezime... from osoba

select id, prezime... from #temp where redniBroj between 5 and 10

drop table #temp


??
Every hamster has his day.
 
Odgovor na temu

roberto555
Croatia

Član broj: 64744
Poruke: 451
*.adsl.net.t-com.hr.



Profil

icon Re: select top n, pitanje vezano uz nešto slično tome!!!!11.12.2006. u 15:48 - pre 211 meseci
Code:
USE AdventureWorks;
GO
SELECT SalesOrderID, ProductID, OrderQty
    ,SUM(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Total'
    ,AVG(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Avg'
    ,COUNT(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Count'
    ,MIN(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Min'
    ,MAX(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Max'
FROM Sales.SalesOrderDetail 
WHERE SalesOrderID IN(43659,43664);
GO


eto primjer iz helpa za OVER, skužio sam šta je part.by sad, ma napravit ću eto sad s tvojim imam već dva načina (nije problem više), no nije mi sad samo da to napravim, htio bih usput skužit što znači tj što radi koja klauzula, da znam za ubuduće kad mi negdje zatreba nešto takvo,(ne volim da mi netko nešto narpavi pa ja samo copy...) tj da na kraju ne znam ni kako radi!

-danas sam napravio "test", tj upisao sam oko 60 000 stavaka u bazu, i kad sam probao program koji radi u jednom djelu traženje baze al na event text_changed dolazi do "trzaja", jer pretpostavljate vadim sve iz baze, pa ću sad to ograničiti na 500 zapisa recimo sa top u select upitu, no kad se želi recimo prikazati sve da nebi bilo da program smrzne dok vadi sve iz baze, imam jednu ideju koja onda zahtjeva ovo što sam na početku pitao! iako i 60 000 zapisa i nije tako puno jako budući da se koristeći program može upisati 999 999, al dosad nisam isprobavao kako radi kad ima više zapisa, pa eto sad ću to doraditi! može i neki savjet vezan uz ovo?!?! ako je netko imao sličnih "problemčića"...
----Roberto----
 
Odgovor na temu

[es] :: MS SQL :: select top n, pitanje vezano uz nešto slično tome!!!!

[ Pregleda: 2356 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.