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 :

jointure et top 1 ?


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2003
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 2
    Points : 2
    Points
    2
    Par défaut jointure et top 1 ?
    Bonjour,


    j'ai quelques pb a extraire une donnée avec une requete

    j'aimerai éviter les curseurs

    j'ai une table de fabriquant avec des fabriquants qui sont référencés plusieurs fois.
    exemple :
    ID=000254
    FABRIQUANT=SONY

    et

    ID=002589
    FABRIQUANT=SONY

    dans la table fabriquant.

    j'ai une table produits dans laquelle j'ai les champs
    IDFAB, IDPROD,DESC

    j'ai une table temporaire dans laquelle j'ai les champs
    FABRIQUANT,IDPROD,DESC

    je dois inserer dans la table produit une seule fois chaque entree

    un INNER JOIN me donnera 2 fois chaque produit SONY

    ma requete etait

    INSERT INTO PRODUITS VALUES
    (select idfab,idprod,desc from fabriquants inner join temporaire
    on fabriquants.fabriquant=temporaire.fabriquant)

    j'aimerai recuperer le premier id pour chaque fabriquant.

    merci de votre aide


    nb : j'utilise SQL server 2000

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Salut, et bienvenue sur ce forum,

    La logique voudrait que tu commences par te débarrasser de ces encombrants doublons, non ?
    Passe jeter un oeil sur le tuto de SQLPro à ce sujet : http://sql.developpez.com/doublons/

    Si tu souhaites les conserver, il te faut une sous-requête pour que le SELECT ne te renvoie qu'une seule ligne, du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT idfab, idprod, desc
      FROM fabriquants F1 INNER JOIN temporaire ON F1.fabriquant = temporaire.fabriquant
     WHERE F1.fabriquants.id = (select MIN(F2.id) FROM fabriquant F2 WHERE F1.fabriquant
    L'inconvénient d'une telle solution est que tu choisis une valeur totalement arbitraire de fabricants.id ! C'est donc de la bidouille ...
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO PRODUITS VALUES 
    (select min(idfab), idprod, desc from fabriquants inner join temporaire 
    on fabriquants.fabriquant=temporaire.fabriquant
    GROUP BY temporaire.fabriquant, idprod, desc )
    Avec la même bidouille que Xo
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

Discussions similaires

  1. [MySQL] Jointure top longue ?
    Par Awery dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 11/09/2012, 11h55
  2. Utilisation de la fonction TOP avec une jointure
    Par pc75 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 06/07/2007, 08h11
  3. [SQL S.2000] Jointure et top
    Par Wells dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 18/04/2007, 13h11
  4. [ms sql server 2000] top 1 dans une condition de jointure ?
    Par sylvkin dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/10/2005, 17h10
  5. jointure renvois pas tous les enregistrements
    Par rayonx dans le forum Langage SQL
    Réponses: 7
    Dernier message: 29/08/2002, 12h51

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