Autor Téma: první řádek v tabulce  (Přečteno 4000 krát)

rustymattock

  • Host
první řádek v tabulce
« kdy: 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

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4438
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:první řádek v tabulce
« Odpověď #1 kdy: 10-12-2012, 14:53:12 »
Čo ja viem tak jedine TimeStamp.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1436
  • Karma: 34
    • Pepak.net
Re:první řádek v tabulce
« Odpověď #2 kdy: 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 :-)

Offline Mi.Chal.

  • Guru
  • *****
  • Příspěvků: 574
  • Karma: 25
Re:první řádek v tabulce
« Odpověď #3 kdy: 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.

rustymattock

  • Host
Re:první řádek v tabulce
« Odpověď #4 kdy: 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)

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1436
  • Karma: 34
    • Pepak.net
Re:první řádek v tabulce
« Odpověď #5 kdy: 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í.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4438
  • Karma: 39
    • Verze Delphi: XE7 professional
Re:první řádek v tabulce
« Odpověď #6 kdy: 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.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2349
  • Karma: 102
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:první řádek v tabulce
« Odpověď #7 kdy: 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
Embarcadero MVP - Czech republic

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1436
  • Karma: 34
    • Pepak.net
Re:první řádek v tabulce
« Odpověď #8 kdy: 10-12-2012, 19:18:26 »
To je syntaxe Oracle.

Offline Mi.Chal.

  • Guru
  • *****
  • Příspěvků: 574
  • Karma: 25
Re:první řádek v tabulce
« Odpověď #9 kdy: 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

rustymattock

  • Host
Re:první řádek v tabulce
« Odpověď #10 kdy: 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.