MS SQL Select Abfrage Pagination

nosean

Neuer Benutzer
Beiträge
3
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.
 
Werbung:
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
 
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
 
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
 
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.
 
@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... :)
 
Werbung:
Zurück
Oben