Forum Delphi.cz

Databáze => MS SQL => Téma založeno: rustymattock 10-12-2012, 14:35:37

Název: první řádek v tabulce
Přispěvatel: rustymattock 10-12-2012, 14:35:37
Ahoj kluci,

potřeboval bych z fronty záznamů vždy pracovat s prvním v tabulce.
Zkoušel jsem si proto vytvořit sloupec s autoincrementem, ale zjistil jsem, že funguje zcela jinak než jsem čekal :-)
Když totiž vyřízený řádek smažu, tak se autoincrement nupraví a '1' mi už chybí... ale to vy už jistě víte.

Prásknul by mi tedy někdo, jak najít konkrétní řádek v tabulce (v mém případě hned první), případně jak zajistit "refresh" očíslování řádků ?

Děkuji
Název: Re:první řádek v tabulce
Přispěvatel: Stanislav Hruška 10-12-2012, 14:53:12
Čo ja viem tak jedine TimeStamp.
Název: Re:první řádek v tabulce
Přispěvatel: pepak 10-12-2012, 14:55:49
SELECT TOP 1 pole1, pole2, ... FROM tabulka WHERE podminky ORDER BY poradi.

Refresh očíslování řádků triggerem, ale asi tě tvůj DB admin zabije :-)
Název: Re:první řádek v tabulce
Přispěvatel: Mi.Chal. 10-12-2012, 14:58:57
SELECT TOP 1 pole1, pole2, ... FROM tabulka WHERE podminky ORDER BY poradi.

Refresh očíslování řádků triggerem, ale asi tě tvůj DB admin zabije :-)

ona je to hlavně blbost. Id se normálně nikde nezobrazuje a používá se jenom na identifikaci záznamů. Pokud s tím člověk chce dělat něco jiného, tak by k tomu měl použít zvláštní sloupec.
Název: Re:první řádek v tabulce
Přispěvatel: rustymattock 10-12-2012, 15:40:08
SELECT TOP 1 je supr.
to je to co jsem potřeboval.  děkuji.

P.S: aniž bych to teď potřeboval... jde nějak takhle zjistit i třeba 10-tý řádek ? (ten TOP vybere jen horních X)
Název: Re:první řádek v tabulce
Přispěvatel: pepak 10-12-2012, 15:45:37
Přesnou syntaxi si nepamatuju, ale určitě to jde. Vygoogli si ten TOP, bude u toho i přeskakování.
Název: Re:první řádek v tabulce
Přispěvatel: Stanislav Hruška 10-12-2012, 16:05:03
Vychádzal som doslovne z tohto

potřeboval bych z fronty záznamů vždy pracovat s prvním v tabulce.

To sa nedá nijako zaistiť. Jedine, žeby si definoval čo je prvý riadok v tabuľke. Fyzicky sa môže zmeniť. DB zapisuje nové riadky krížom krážom. A môže to poradie kedykoľvek zmeniť. Napr. backup + obnova.
Název: Re:první řádek v tabulce
Přispěvatel: Radek Červinka 10-12-2012, 17:35:11
TOP neumi IMHO u MSSQL preskakovani.

Prý se většinou se používá něco jako
Kód: [Vybrat]
SELECT
    ROW_NUMBER() OVER (ORDER BY Name) AS Number, xxx
a
Kód: [Vybrat]
WHERE
  Number BETWEEN Number = 10 AND NUmber = 20
Název: Re:první řádek v tabulce
Přispěvatel: pepak 10-12-2012, 19:18:26
To je syntaxe Oracle.
Název: Re:první řádek v tabulce
Přispěvatel: Mi.Chal. 10-12-2012, 19:22:29
To je syntaxe Oracle.

to je MSSQL od verze 2005, v Oracle staci select rownum (http://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns009.htm)

jinak na tohle není žádný standard, třeba v mysql je zase limit
Název: Re:první řádek v tabulce
Přispěvatel: rustymattock 11-12-2012, 07:36:36
že se nové řádky nezapisují ze železnou samozřejmostí pod sebe je důležitá informace....
ale snad v tom případě stačí prosté prevetivní seřazení dle "autoincrement" sloupce a následně již bezpečně vybrat ten první.
Čili:
SELECT TOP 1 * FROM tabulka ORDER BY poradi

...tož děkuji vám pánové. Zase u dalšího dotazu ;-)
Ještě na závěr bych se chtěl zeptat, zda je nějaká free alternativa k Mrkvosoft SQL Server magament studiu ?
Ten co jsem ztáhl, má půlroční free licenci a kupovat ho pak kůli ochotnickým pracovním aktivitám, domů nehodlám.