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

MS SQL Server Discussion :

[ms sql server 2000] top 1 dans une condition de jointure ?


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5
    Par défaut [ms sql server 2000] top 1 dans une condition de jointure ?
    Bonjour,

    Pour MS SQL Server 2000, je souhaite joindre 3 tables :

    1. Articles
    2. Commandes
    3. Stocks

    Je voudrai afficher les lignes de :
    - chaque article
    - avec la première commande et le premier stock enregistré s'il existe
    - dans tous les cas, tous les produits doivent s'afficher.

    Exemple :

    Table Produit :
    Ref Nom
    A1 Produit 1
    A2 Produit 2
    A3 Produit 3

    Commande :
    Ref Date
    A1 01/01/2000
    A1 24/07/1999
    A3 02/04/2003

    Stock :
    Ref Quantite
    A2 5
    A3 2

    Je voudrai en résultat :
    Ref Nom Date Quantite
    A1 Produit 1 01/01/2000
    A2 Produit 2 5
    A3 Produit 3 02/04/2003 2


    Je n'arrive pas à insérer une clause TOP 1 dans ma condition de jointure, ma requete ressemble à ça (sans la limite) :

    SELECT ARTICLE.Ref, * FROM ARTICLE
    LEFT JOIN COMMANDE ON ARTICLE.Ref = COMMANDE.Ref
    LEFT JOIN STOCK ON ARTICLE.Ref = STOCK.Ref

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    En tout cas, Le top ne marche pas dans la clause FROM !
    Voudriez passer par une sous requête ?

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5
    Par défaut
    Citation Envoyé par WOLO Laurent
    En tout cas, Le top ne marche pas dans la clause FROM !
    Voudriez passer par une sous requête ?
    Oui peu importe du temps que ca marche :-)

  4. #4
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    L'idée qui vient à l'esprit est de récupérer les dates des premières commandes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT C1.REF,C1.DATE
    FROM COMMANDE C1
    WHERE C.DATE=(SELECT MIN(DATE)
                              FROM COMMANDE C2
                              WHERE C1.REF=C2.REF)
    Ensuite, nous pouvons joindre les tables Articles et stocks pour étendre notre selection.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT A.REF,A.NOM,C.DATE,S.QTE
    FROM (
    SELECT C1.REF,C1.DATE
    FROM COMMANDE C1
    WHERE C.DATE=(SELECT MIN(DATE)
                              FROM COMMANDE C2
                              WHERE C1.REF=C2.REF)
    ) C JOIN ARTICLE A
       ON C.REF=A.REF
          JOIN STOCKS S
       ON S.REF=C.REF
    Je n'ai vraiment pas eu le temps de tester.
    Désolé.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

Discussions similaires

  1. [Sql Server 8.0]Requête dans une chaîne avec Cursor à executer
    Par Nicodemus dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/11/2006, 17h34
  2. [SQL Server 8] Un UNION dans une VIEW
    Par Baquardie dans le forum Langage SQL
    Réponses: 1
    Dernier message: 30/05/2006, 21h36
  3. ASP/ SQL Server : resultat de RS dans une cellule.
    Par joe_le_mort dans le forum ASP
    Réponses: 2
    Dernier message: 11/08/2005, 13h26
  4. [SQL Server 2000] configurer ou supprimer une connexion
    Par drinkmilk dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/08/2005, 21h48

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