Announcement

Collapse
No announcement yet.

Durch bestimmte Anzahl Datensätze schalten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Durch bestimmte Anzahl Datensätze schalten

    Hi@all,

    ich habe da folgende Aufgabenstellung.
    Ich habe in einer Tabelle Spalten, mit Werten, die mehrfach vorkommen können z.B. die Spalte Land in der gibt es z.B. 100 mal Einträge mit dem Wert Deutschland.
    Nun soll es möglich sein der Reihenfolge nach immer 25 Datensätze anzuzeigen, sprich wenn ich auf Weiter klicke möchte ich die nächsten 25 Datensätze ausgehend vom letzten Datensatz vom vorhergenden Ergebnis zurückbekommen.
    Besonderheiten sind, das die Spalten auf- bzw absteigend sortiert sein können und man halt vorwärts wie rückwärts schalten kann. Es gibt keinen auto_inc Index sondern Index ist eine Selbsterstellte ID als String. Wie in diesem Beispiel liegt die Sortierung(Order by) auf Land, sprich die Sortierung kann auch auf anderen Feldern liegen.

    Wie kann man das mit MS SQL lösen?
    Für eure Mühen schon mal besten Dank im voraus.

    Gruß
    CrazyPlaya

  • #2
    Hallo,

    aufwärts:

    SELECT TOP 25 from tabelle where sortierwert > :letzterwert
    order by sortiertwert ASC

    abwärts:

    SELECT TOP 25 from tabelle where sortierwert < :ersterwert
    order by sortierwert DESC

    So in der Art...

    Grüße
    Julia

    Comment


    • #3
      Letzter und nächster Wert sind 'Deutschland' so komm ich aber nicht auf den nächsten Datensatz

      Ich stell mir das eher so vor,
      SELECT TOP 25 from tabelle where sortierwert > :letzerwert
      and ->
      hier hätte ich höchstens die ID des Datensatzes anzubieten.
      als Nächste bedingung müsste dann eher sowas kommen wie vom Datensatz mit der ID aus weiterlaufen

      Ist schon ziemlich komplex die Sache.

      Bsp:

      land | id
      ----------------------------
      Deutschland | 12fa
      Deutschland | e4a
      Deutschland | 1350
      Deutschland | 12af
      Deutschland | e34
      Deutschland | 4ef
      Deutschland | 154f
      Deutschland | aa3
      Deutschland | 852
      Deutschland | efa
      Deutschland | 490b
      Deutschland | 583c
      Deutschland | 5824

      Nimm Hier mal das Beispiel Top 6 um es kürzer zu halten.
      Als erstes werden die Datensätze von '12fa' - '4ef' angezeigt.
      Weiter Schalten = +6 ab '154f'
      Richtig aussehen würde die id allerdings so ->'{3e8-3e8-12fa}' inkl. der Spitzklammern
      Zuletzt editiert von CrazyPlaya; 15.03.2007, 17:51. Reason: Ergänzung

      Comment


      • #4
        Dann musst du wohl immer auch nach ID sortieren.

        SELECT TOP 25 from tabelle
        where sortierfeld >= :Wert and id > :ID
        order by sortierfeld, id

        Voraussetzung ist natürlich, das der originäre Datensatz auch als zweites nach ID sortiert war.
        Ohne das gehts wohl nicht so ohne weiteres ohne Programm drumherum.

        Comment


        • #5
          Das habe ich auch bereits versucht, Problem ist an dieser Stelle, wenn sich der Wert ändert und in der richtigen Reihenfolge von Country bspw. Zypern kommen würde, würde nicht der nächste Datensatz mit Zypern angezeigt werden, sondern der mit der nächsthöheren id.
          Es sollte dann aber mit Zypern weiterlaufen.

          Comment


          • #6
            Wie wär das:

            SELECT ..
            Where (sortierfeld = :wert and ID > :ID) or (sortierfeld > Wert)
            order by sortierfeld, ID

            Comment


            • #7
              Das könnte funktionieren muss ich mal probieren.
              Sage dann Bescheid. Danke erstmal

              Comment


              • #8
                Juli, du bist ein Schatz. Das klappt. Du hast mich vor einem langen Abend verschont. Wie kann ich das nur wieder gut machen

                Comment

                Working...
                X