AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Datensätze in einer Datenbank durchnummerieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datensätze in einer Datenbank durchnummerieren

Ein Thema von bernhard_LA · begonnen am 13. Nov 2023 · letzter Beitrag vom 27. Nov 2023
Antwort Antwort
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.136 Beiträge
 
Delphi 11 Alexandria
 
#1

Datensätze in einer Datenbank durchnummerieren

  Alt 13. Nov 2023, 14:38
Datenbank: MSSQL • Version: 12 • Zugriff über: ADO
ich suche eine Funktion, Stored procedure etc. welche mir in einem leeren Feld meiner Datenbank-Tabelle "RecordID " von 0 beginnend alle meine Dätensätze durchnummeriert.
  Mit Zitat antworten Zitat
fisipjm

Registriert seit: 28. Okt 2013
298 Beiträge
 
#2

AW: Datensätze in einer Datenbank durchnummerieren

  Alt 13. Nov 2023, 14:43
Du meinst sowas wie

Code:
select ROW_NUMBER() Over(order by <Feldname>) as Row, * from <Tabelle>
edit: Null variante wäre dann:
Code:
select ROW_NUMBER() Over(order by <Feldname>) -1 as Row, * from <Tabelle>

Geändert von fisipjm (13. Nov 2023 um 14:45 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#3

AW: Datensätze in einer Datenbank durchnummerieren

  Alt 13. Nov 2023, 14:48
Als Feld in der Tabelle -> z.B. eine StoredProc/Trigger, welche das schreibt (aus einer SEQUENZ oder MAX+1 abfragen),
aber die SEQUENZ wohl eher als DEFAULT am Feld definiert.

ansonsten gibt es, wie auch in vielen anderen DBMS, eine WindowFunction ROW_NUMBER()
https://learn.microsoft.com/en-us/sq...l-server-ver16
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (13. Nov 2023 um 18:37 Uhr) Grund: zu langsam @_@
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#4

AW: Datensätze in einer Datenbank durchnummerieren

  Alt 13. Nov 2023, 17:32
ich suche eine Funktion, Stored procedure etc. welche mir in einem leeren Feld meiner Datenbank-Tabelle "RecordID " von 0 beginnend alle meine Dätensätze durchnummeriert.
Was genau ist gemeint:

Bei der Ausgabe für eine fortlaufende Nummer im Ergebnis sorgen?

Oder:

In der Datenbank das Feld RecordID automatisch beim Einfügen eines Datensatzes mit dem nächsten Wert für die fortlaufende Nummer befüllen? Sequenz und Trigger.
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.049 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Datensätze in einer Datenbank durchnummerieren

  Alt 13. Nov 2023, 18:33
SEQUENCE? Ich würde eher IDENTITY vorschlagen.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.136 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Datensätze in einer Datenbank durchnummerieren

  Alt 27. Nov 2023, 11:27
Aktuell kann ich mir alle Datensätze holen und das Feld Row# hinzufügen mit diesem SQL Statement:


Delphi-Quellcode:

  SELECT
  ROW_NUMBER() OVER(ORDER BY MYID ASC) AS Row#,
  GlobalID,MYID,Name
FROM dbo.MeinTabellenName where GlobalID=''
dh. ich müsse im nächsten Schritt eine Query erzeugen und dann Row# in mein Feld GlobalID kopieren, der Delphi-Code sollte kein Problem sein.
Viel lieber würde ich gleich das Feld GlobalID aktualieren mit diesem SQL Ansatz



Delphi-Quellcode:

update dbo.MeinTabellenName SET GlobalID=ROW_NUMBER() OVER(ORDER BY MYID ASC)

hier bekomme ich jetzt diesen Fehler :



Msg 4108, Level 15, State 1, Line 1
Windowed functions can only appear in the SELECT or ORDER BY clauses.

Completion time: 2023-11-27T11:19:55.9818353+01:00





gibt es eine einfache Lösung für mein Problem?
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
379 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Datensätze in einer Datenbank durchnummerieren

  Alt 27. Nov 2023, 11:41
Vielleicht mit 'nem Subquery?

Code:
  update dbo.MeinTabellenName t1, (  SELECT
  ROW_NUMBER() OVER(ORDER BY MYID ASC) AS Row#,
  GlobalID,MYID,Name FROM dbo.MeinTabellenName where GlobalID=''
) t2
set t1.RowNumber=t2.Row# where t1.MYID=t2.MYID
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.354 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Datensätze in einer Datenbank durchnummerieren

  Alt 27. Nov 2023, 11:42
gibt es eine einfache Lösung für mein Problem?
Einfach ist immer Ansichtssache.
Wie wäre es mit einer Stored Procedure mit einer Cursor-Loop für die Abfrage mit der Row_Number.
In der Loop ein passendes Update-Statement einbauen und dann sollte es meiner Meinung nach funktionieren
Peter
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#9

AW: Datensätze in einer Datenbank durchnummerieren

  Alt 27. Nov 2023, 12:39
welche mir in einem leeren Feld meiner Datenbank-Tabelle "RecordID " von 0 beginnend alle meine Dätensätze durchnummeriert.
Falls es das Feld noch nicht gibt sollte dies das gewünschte Ergebnis bringen:
SQL-Code:
ALTER TABLE dbo.MeinTabellenName
ADD RecordID INT IDENTITY(0, 1);
Wenn das Feld schon existiert musst du es halt erst löschen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz