Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

MS SQL Select Abfrage Pagination

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von nosean, 12 März 2015.

  1. nosean

    nosean Neuer Benutzer

    Hallo ich versuche seit einigen Stunden für mein Intranet eine pagination zu erstellen.
    Die Daten sollen aus mehreren Tabelle zusammen geführt werden.

    Hab mir schon was aus dem Inet gezogen und mit einer Tabelle funktioniert das auch.

    DECLARE @PageNumber AS INT, @RowspPage AS INT
    SET @PageNumber = '$attributes[StartRow]'
    SET @RowspPage = '$attributes[RowspPage]'
    SELECT * FROM (
    SELECT ROW_NUMBER() OVER(ORDER BY BestellungID) AS NUMBER,
    BestellungID, Mandant, Konto, Adresse, Tank, Bemerkung, Bestellmenge, Fahrer, Fuellstand, Preis FROM PFTankgasBestellungen
    ) AS TBL
    WHERE Mandant = '$MandantID'
    AND NUMBER BETWEEN ((@PageNumber - 1) * @RowspPage + 1) AND (@PageNumber * @RowspPage)
    ORDER BY BestellungID

    Jetzt hab ich aber noch eine Tabelle KHKAdressen wo die Spalte Adresse mit der Spalte Adresse aus PFTankgasBestellungen verknüft werden soll.

    Ich weis ehrlich gesagt nicht wo ich mit INNER Join anknüpfen muss.

    Vielen Dank für eure Hilfe.
     
  2. Distrilec

    Distrilec Datenbank-Guru

    Ist jetzt geraten... Aber das wäre für mich der sinnvollste Platz?
    Immerhin willst du ja eben diese beiden Tabellen joinen?... Etwas mehr Information wäre nett...

    Code:
    Select *
    From   (Select row_number() over(Order By pft.bestellungid) As Number,
                   pft.bestellungid,
                   pft.mandant,
                   pft.konto,
                   pft.adresse,
                   pft.tank,
                   pft.bemerkung,
                   pft.bestellmenge,
                   pft.fahrer,
                   pft.fuellstand,
                   pft.preis
            From   pftankgasbestellungen pft
          
            Inner  Join KHKAdressen khk
            On     khk.adresse = pft.adresse) As tbl
    Where  mandant = '$MandantID'
    And    Number Between ((@pagenumber - 1) * @rowsppage + 1) And (@pagenumber * @rowsppage)
    Order  By bestellungid
    
     
  3. nosean

    nosean Neuer Benutzer

    Danke für die Hilfe jetzt gehts ....
    Mfg
    Markus
     
  4. nosean

    nosean Neuer Benutzer

    Hallo nochmal,
    habe übersehen das ich mehrere Datensätze angezeigt bekomme.

    Code:
    
                Select *
                From   (Select row_number() over(Order By pft.bestellungid) As Number,
                               pft.BestellungId,
                               pft.Mandant,
                               pft.Konto,
                               pft.Adresse,
                               pft.Tank,
                               pft.Bemerkung,
                               pft.Bestellmenge,
                               pft.Fahrer,
                               pft.Fuellstand,
                               pft.Preis,                          
                               khk.Matchcode,
                               khk.Anrede,
                               khk.Name1,
                               khk.Name2,
                               khk.LieferStrasse,
                               khk.LieferPLZ,
                               khk.LieferOrt,
                               khk.Telefon,
                               khk.Memo
                        From   pftankgasbestellungen pft
                     
                        Inner  Join KHKAdressen khk
                        On     khk.adresse = pft.adresse
                        where pft.Mandant = 1) As tbl
                WHERE Mandant = '$MandantID'
                And    Number Between ((@pagenumber - 1) * @rowsppage + 1) And (@pagenumber * @rowsppage)
                Order  By bestellungid
    Jetzt hab ich festgestellt das der PKey bei KHKAdressen mehrere gleiche Werte enthält. Mit der Ausnahme das die MandantID unterscheidlich ist.
    Wenn ich die Abfrage ausführe bekomme ich doppelte Datensätze angezeigt.
    Wie bekomm ich das denn noch gefiltert das nur Datensätze angezeigt werden wo MandantID und Adresse übereinstimmt.


    Danke
     
  5. Distrilec

    Distrilec Datenbank-Guru

    Spaltenbezeichnung evtl. anpassen
    Code:
    Select *
                From   (Select row_number() over(Order By pft.bestellungid) As Number,
                               pft.BestellungId,
                               pft.Mandant,
                               pft.Konto,
                               pft.Adresse,
                               pft.Tank,
                               pft.Bemerkung,
                               pft.Bestellmenge,
                               pft.Fahrer,
                               pft.Fuellstand,
                               pft.Preis,                        
                               khk.Matchcode,
                               khk.Anrede,
                               khk.Name1,
                               khk.Name2,
                               khk.LieferStrasse,
                               khk.LieferPLZ,
                               khk.LieferOrt,
                               khk.Telefon,
                               khk.Memo
                        From   pftankgasbestellungen pft
                   
                        Inner  Join KHKAdressen khk
                        On     khk.adresse = pft.adresse
                        And   khk.mandant = pft.mandant) As tbl
                WHERE Mandant = '$MandantID'
                And    Number Between ((@pagenumber - 1) * @rowsppage + 1) And (@pagenumber * @rowsppage)
                Order  By bestellungid
     
  6. ukulele

    ukulele Datenbank-Guru

    Ich denke mal du meinst das mehrere Datensätze in der Tabelle pftankgasbestellungen mit unterschiedlichen MandantIDs den selben Fremdschlüssel auf den selben Datensatz in der Tabelle KHKAdressen gesetzt haben, was dann dazu führt das dein Select unterschiedliche MandantIDs mit der selben KHKAdresse verknüpft. Das wäre ja auch richtig.

    Ich kann mir weder vorstellen das du in der KHKAdressen Tabelle doppelte IDs hast (dann wäre es kein gültiger Primary Key) noch das du MandantID mit Adesse(ID) verknüpfen willst, das scheint mir total sinnfrei denn das sind vermutlich unterschiedliche PKs unterschiedlicher Tabellen.
     
  7. Distrilec

    Distrilec Datenbank-Guru

    @ukulele
    Warum sollte er die MandantID mit der Adresse verknüpfen?...

    Was er wollte ist das Mandant mit Mandant verknüpft wird, da diese Zuordnung bis jetzt gefehlt hat... Also Problem gelöst... :)
     
  8. ukulele

    ukulele Datenbank-Guru

    Aber eigentlich verstehe ich nicht was er will.
     
  9. Distrilec

    Distrilec Datenbank-Guru

    @ukulele Er möchte das die MandantID und Adresse aus "pftankgasbestellungen" mit der MandantID und Adresse aus "KHKAdressen" übereinstimmt
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden