Leifu Geschrieben 19. November 2008 Teilen Geschrieben 19. November 2008 Hallo an alle MSSQL Freaks, ich hab da mal ein Problem. Ich habe eine Tabelle. Diese Tabelle besteht aus mehreren Einträge. Ich will nun eine Abfrage haben die mir diese Tabelle anzeigt jedoch die erst 50 Einträge nicht anzeigt. Quasi ab dem 51. Wie kann ich das machen ? Über eure Ideen würde ich mich freuen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
michaelmeier Geschrieben 19. November 2008 Teilen Geschrieben 19. November 2008 mit oracle wär das nicht passiert... *scnr* scheinbar ist es mit dem ms sql nicht ganz so einfach... habe hier nen thread im forum gefunden schauste hier vielleicht ist das was für dich. habe hier leider nur oracle-server, daher kann ich's nicht validieren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
LadyPreis Geschrieben 19. November 2008 Teilen Geschrieben 19. November 2008 ich hätte eine idee, wie das funktionieren könnte, ist aber für einen grossen Datenbestand nicht gerade performant: erstelle 2 identische Views der TabelleDann löscht du aus dem 2ten View die ersten 49 Zeilen (LIMIT)mittels INTERSECT die beiden Views abgleichen. Dadurch werden dir nur die Daten angezeigt, die in beiden VIEWs enthalten sind. da in einem view die ersten 49 Zeilen fehlen, werden dir mit INTERSECT alle Daten ab zeile 50 ausgegeben da ich aber nicht sicher bin, ob das funktioniert, probier das erstmal auf einer testumgebung. Gruß Die Lady Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 19. November 2008 Teilen Geschrieben 19. November 2008 Naja LIMIT gibts in MSSQL nicht, das heißt dort TOP, aber es sollte auch etwas eleganter gehen: T-SQL: Paging with ROW_NUMBER() Im Prinzip ist das nichts anderes als Paging. Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crash2001 Geschrieben 19. November 2008 Teilen Geschrieben 19. November 2008 Unter MSSQL sollte das mittels "top" machbar sein. Das ist afaik zumindest die Entsprechung der "Limit"-Funktion von MySQL. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 19. November 2008 Teilen Geschrieben 19. November 2008 Hi Leifu, ich hoffe, du bist dir darueber im klaren, dass eine Tabelle per Definition erstmal nicht softiert ist. Ohne Sortierkriterium kannst du also auch keine "ersten" 50 Eintraege ermitteln, die du weglassen willst. Ansonsten gehts ab SQL Server 2005 wie schon von dr.dimitri erwaehnt ueber die ROW_NUMBER() Funktion und bei kleineren SQL Server Versionen ueber ne korrelierte Subquery in der du deine Zeilennummern selbt ermittelst. Goos Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Leifu Geschrieben 19. November 2008 Autor Teilen Geschrieben 19. November 2008 Danke für die Infos. Wie würde das dann ausehen ? Select * FROM Tabelle dann den Sort Befehl ? und dann ROW_Number() ? Sorry bin da noch nicht der profi drin. Habe bis jetzt nur "einfache" Abfragen erstellt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 19. November 2008 Teilen Geschrieben 19. November 2008 Das kann dann in etwa so ausschaun. WITH mycte AS (SELECT *, ROW_NUMBER() OVER (ORDER BY col1 ASC) AS 'row_num' FROM tabelle1 ) SELECT col1, col2, col3 FROM mycte WHERE row_num > 50 Du benutzt dabei einen CTE (mycte) in dem du eine Zeilennummer generierst. Die Zeilennummer wird generiert ueber die Spalte col1 aufsteigend. Danach selektierst du alles was du von der Tabelle brauchst von deinem CTE und kannst auf die generierte Zeilnnummerspalte (row_num) zugreifen . Goos Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Leifu Geschrieben 19. November 2008 Autor Teilen Geschrieben 19. November 2008 danke super werde das mal ausprobieren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 19. November 2008 Teilen Geschrieben 19. November 2008 Des weiteren ist, wie schon angesprochen, das Statement ohne ORDER BY absolut witzlos, da es ansonsten keine definierte Reihenfolge gibt. Dim Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.