IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Premiere ligne seulement


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Premiere ligne seulement
    Bonjour,

    Je suis à mon premier message sur ce forum. Je suis novice en SQL et j'apprécierais un peu d'aide. Merci à l'avance. Voici mon problème. Voici une requete sur les table InvoiHdr (Entete de facture) et InvoiDet (détail de la facture) et Cust (client de la facture)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT     InvoiHdr.InvoiId, InvoiHdr.InvoiDate, InvoiHdr.SoldTo, InvoiHdr.ShipTo, InvoiHdr.SalesPerson, InvoiHdr.ShipDate, InvoiHdr.DetAmnt, 
                          InvoiHdr.InvoiType, InvoiDet.ItemId, InvoiDet.InInvoiDetId
    FROM         InvoiHdr INNER JOIN
                          Cust ON InvoiHdr.ExCustId = Cust.InCustId INNER JOIN
                          InvoiDet ON InvoiHdr.InInvoiId = InvoiDet.ExInvoiId
    WHERE     (InvoiHdr.InvoiType = 51)
    Cette requete fonctionne très bien. Seulement j'aimerais que la requête ne me retourne que la premère ligne de la table InvoiDet pour chaque InvoiHdr associé.

    J'imagine que ce n'est pas grand chose mais je n'y parvient pas.


    Je travaille avec Sql Server de Microsoft

    Merci encore!

    Pierre

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Une réponse.... s'il vous plait!
    Salut à tous,

    Comme première essai sur ce forum je demeure une peu perplexe quant au nombre de réponse que j'ai eu jusqu'à maintenant: 0.

    Je ne suis peut-être pas clair, devrais-je ajouter quelqu'autres information.

    Peut-être ai-je enfreind quelques règles sur ce forum?

    Dite-le moi je serai heureux d'y répondre et d'y remédier si nécessaire!

    Merci à l'avance de votre support!

    plamy

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Salut,

    Tu peux essayer cette solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT     InvoiHdr.InvoiId, InvoiHdr.InvoiDate, InvoiHdr.SoldTo, InvoiHdr.ShipTo, InvoiHdr.SalesPerson, InvoiHdr.ShipDate, InvoiHdr.DetAmnt, 
                          InvoiHdr.InvoiType, InvoiDet.ItemId, InvoiDet.InInvoiDetId
    FROM         InvoiHdr INNER JOIN
                          Cust ON InvoiHdr.ExCustId = Cust.InCustId 
    					  INNER JOIN
    					  (select * from
                                                   (select i.*, row_number() over (partition by ExInvoiId order by ExInvoiId) from InvoiDet i) 
    					   where rn = 1) InvoiDet
    					  ON InvoiHdr.InInvoiId = InvoiDet.ExInvoiId
    WHERE     (InvoiHdr.InvoiType = 51)
    L'idée est d'utiliser row_number() over partition by ExInvoiId pour numéroter les lignes de InvoiDet par ExInvoiId et de ne conserver que la première.
    Mais cette selection est arbitraire, as tu un critère permettant de savoir quelle ligne conserver?

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 874
    Points : 53 048
    Points
    53 048
    Billets dans le blog
    6
    Par défaut
    ne vous étonnez pas du faible nombre de réponse, mais lisez ceci :
    http://www.developpez.net/forums/a69...gage-sql-lire/

    Or vous n'avez pas précisé avec quelle version de SQL Server vous travaillez ni donné la définition de vos tables sous forme d'ordre SQL CREATE.

    A +

Discussions similaires

  1. Lire seulement la premiere ligne d' un fichier
    Par afifaNancy dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 18/03/2011, 18h59
  2. [C#] Récuperer la premiere ligne d'un SqlDataReader
    Par Oberown dans le forum Windows Forms
    Réponses: 3
    Dernier message: 10/01/2005, 18h26
  3. Makefile : seule la premiere ligne compile
    Par guda dans le forum Systèmes de compilation
    Réponses: 1
    Dernier message: 29/07/2004, 12h28
  4. [VB6] [MSHFlexGrid] Tri sur clic dans la première ligne
    Par degreste dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 06/03/2003, 00h42
  5. Supprimer la premiere ligne d'un fichier
    Par Kahiba dans le forum Langage
    Réponses: 7
    Dernier message: 11/02/2003, 10h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo