Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

SQL Abfrage aber wie ?

Empfohlene Antworten

Veröffentlicht

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.

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.

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 Tabelle

  • Dann 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

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

  • Autor

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.

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.