J'ai une paire de tables SQL Server.Requête SQL Parent-enfant distinct
P contient un identifiant et un nom. PR contient id, interestrate, tiernumber, fromdate, todate et P.id. PR peut contenir plusieurs lignes répertoriées par p.id/tier. (les niveaux sont une liste des taux qu'un produit peut avoir au cours d'une période donnée.)
Par exemple: Le produit 1 de niveau 1 démarre du 1/1/2008 au 1/1/2009 et a 6 taux indiqués 1 rang par taux. Produit 1 niveau 2 commence 1/2/2009 etc etc etc
J'ai besoin d'une vue sur ce qui montre le nom de P. et le PR.tiernumber et les dates ... MAIS je veux seulement une rangée pour représenter le niveau.
C'est facile:
SELECT DISTINCT P.ID, P.PRODUCTCODE, P.PRODUCTNAME, PR.TIERNO,
PR.FROMDATE, PR.TODATE, PR.PRODUCTID
FROM dbo.PRODUCTRATE AS PR INNER JOIN dbo.PRODUCT AS P
ON P.ID = PR.PRODUCTID
ORDER BY P.ID DESC
Cela me donne les bonnes données exactes ... Cependant: cela me interdit de voir le PR.ID car cela annulerait le distinct.
J'ai besoin de limiter le resultset parce que l'utilisateur doit juste voir juste une liste de niveaux, j'ai besoin de voir le PR.ID affichant toutes les données.
Des idées?
Que voulez-vous dire par "J'ai besoin de voir le PR.ID"? QUI PR.ID, puisqu'il y en a plusieurs par ligne, vous ne pouvez en montrer qu'un. Soit vous avez une rangée par P.ID/Tier, ou par PR.ID. –
Désolé - Je dois retourner à une application un identifiant unique. L'utilisateur veut voir tous les niveaux du produit et veut ensuite en sélectionner un pour être plus complet à l'écran. J'ai besoin de trouver le numéro de niveau de l'élément sélectionné, puis l'utiliser pour récupérer le reste des données ... mais l'application ne peut me donner le numéro de niveau que s'il a l'ID unique. –