» »

[t-sql] SELECT TOP

[t-sql] SELECT TOP

nurmaln ::

Živjo

problemčič:

v tabeli imam
ARTIKEL | OPIS
---------------------
Artikel 1 - Opis A
Artikel 1 - Opis B
Artikel 1 - Opis C
Artikel 1 - Opis D
Artikel 1 - Opis E
Artikel 1 - Opis F
Artikel 2 - Opis A
Artikel 2 - Opis B
Artikel 2 - Opis C
Artikel 2 - Opis D
Artikel 2 - Opis E
Artikel 2 - Opis F


Kako bi napisal SELECT ki bi mi vrnil za vsak artikel prve tri vrstice opisa?


Če želim za vsak artikel posebej ni problema, pač napišem SELECT TOP 3 Opis FROM....

Kako zavraga naj dobim za VSE artikle izpisane prve tri vrstice opisov???


help plz
  • spremenilo: snow ()

borchi ::

na hitro se spomnem samo tegale načina, verjetno pa obstaja veliko bolj eleganten...

select artikel, opis
from (
select t1.*, count(*) as cnt
from tabela t1
inner join tabela t2 on t1.artikel = t2.artikel
where t1.opis >= t2.opis
group by t1.artikel, t1.opis
) tab
where cnt < 4
order by artikel, opis
l'jga

nurmaln ::

a se greva SQL za Telebane pa mi prosim razloži kaj za vraga naredi tale vrstica

where t1.opis >= t2.opis

borchi ::

ta del v navezi s count naredi to, da dejansko dobiš zaporedne številke recordov v tabeli in ker je potem še group by artikel in opis dobiš ločeno "številčenje" za posamen artikel v tem subselectu.

bi pa lahko prišlo do problemov (da bi ti vrnil več kot samo 3 recorde za posamen artikel), če artikel-opis ključ ni unique.
l'jga


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[SQL] Pohitritev izpisa

Oddelek: Programiranje
252628 (1527) kuall
»

pc daljinec

Oddelek: Elektrotehnika in elektronika
81937 (1778) RobbyRS
»

[SQL] poizvedba problem - obrtnik in njegov najdrazji artikel

Oddelek: Programiranje
51873 (1707) imagodei
»

T-SQL FIRST / TOP / MAX...

Oddelek: Programiranje
61427 (1427) frudi
»

[delphi] 2 bazi v eni mreži

Oddelek: Programiranje
6976 (925) seawolf

Več podobnih tem