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 :

Problème pour afficher les 5 dernière interventions


Sujet :

Langage SQL

  1. #21
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 114
    Points : 31 609
    Points
    31 609
    Billets dans le blog
    16
    Par défaut
    Ce qui est pas normal c'est que ça répéte 2 fois le même IN_NUMINTER alors qu'il existe qu'une fois dans la base.
    D'ou vient le problème!!
    Il suffit par exemple que vous ayez deux contacts ayant une machine portant le même nom. Pour s’en assurer, vous devez présenter le résultat de la requête que je vous ai suggéré d’exécuter hier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT  c.CT_NOMCTACT, m.M_NOMMAT
    FROM    MACHINE AS m, CONTACT AS c
    WHERE   m.M_NUMCTACT = c.CT_NUMCTACT 
    AND     c.CT_NUMCLT = 'hf'
    Si ça n'est pas ça, on cherchera ailleurs (réfléchir, chercher...)

  2. #22
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à fsmrel
    J'ai exécuté ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT  c.CT_NOMCTACT, m.M_NOMMAT
    FROM    MACHINE AS m, CONTACT AS c
    WHERE   m.M_NUMCTACT = c.CT_NUMCTACT 
    AND     c.CT_NUMCLT = 'hf'
    le résultat est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CT_NOMCTACT     M_NOMMAT
    gr                  	sd
    sx                  	vhfvj
    désolé j'avais pas trop compris pourquoi cette requête. mais maintenant je vois mieux ou tu veux en venir.

    merci d'avance!!

  3. #23
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 114
    Points : 31 609
    Points
    31 609
    Billets dans le blog
    16
    Par défaut
    D’après le résultat de la requête, on a deux contacts : "gr" et "sx" pour le client "hf". Ces contacts ont chacun une machine, respectivement "sd" et "vhfvj". Chacune de ces machines fait référence au client "hf". En conséquence, la jointure sur NumClt entre Machine et Intervention associe chaque intervention à chaque contact et à chaque machine de celui-ci : le résultat de la 2e requête du message #11 est donc en conformité avec le MCD proposé et avec le contenu de la base de données (deux lignes par intervention). Si vous aviez N contacts pour le client "hf", chaque contact ayant M machines en relation avec "hf", vous auriez N x M lignes par intervention dans le résultat.

    Maintenant, si une intervention ne doit faire référence qu'à une seule machine, le MCD est à revoir, puisque cette contrainte n'y figure pas.

  4. #24
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à fsmrel
    C'est bon j'ai réussit a résoudre mon problème.

    Cela me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT TOP 5 IN_NUMINTER, CT_NOMCTACT, M_NOMMAT
    FROM INTERVENTION, CONTACT, MACHINE 
    WHERE INTERVENTION.IN_IDMAT=MACHINE.M_IDMAT
    AND  MACHINE.M_NUMCTACT=CONTACT.CT_NUMCTACT
    AND IN_NUMCLT='hf'
    ORDER BY IN_NUMINTER DESC;
    en fait, il ma fallut changer la jointure entre INTERVENTION et MACHINE sur qui étais sur NumClt c'est à dire que je l'ai mis sur IdMat.

    Le résultat est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    NumInter             NomCtact           NomMat
    2008/04/05-001	gr                  	sd
    2008/03/10-002	sx                  	vhfvj
    2008/03/05-001	gr                  	sd
    2008/02/15-002	gr                  	sd
    2008/02/05-001	gr                  	sd

    Il me semble que c'est bon!!

    merci d'avance!!

  5. #25
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 114
    Points : 31 609
    Points
    31 609
    Billets dans le blog
    16
    Par défaut
    De fait, puisque l’attribut IDMAT figure non seulement dans la table MACHINE, mais aussi dans la table INTERVENTION, le MCD n’est pas à modifier. Ouf ! Par contre, il serait prudent d’ajouter une jointure INTERVENTION.IN_ NUMCLT = MACHINE.M_NUMCLT dans la requête, au cas où deux machines différant sur le n° de client, pourraient avoir mêmes valeurs pour IDMAT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    WHERE INTERVENTION.IN_ NUMCLT  = MACHINE.M_NUMCLT
    AND     INTERVENTION.IN_IDMAT = MACHINE.M_IDMAT
    ...
    Enjoy

  6. #26
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à fsmrel
    Ok, c'est bon ça fonctionne toujours.

    Il me semblait qu'on pouvais pas avoir 3 jointure si on avais que 3 tables.

    Enfin le principal c'est que ça fonctionne.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [CR XI] Problème pour afficher les etats sur windows 7
    Par regisyves dans le forum SAP Crystal Reports
    Réponses: 11
    Dernier message: 06/02/2012, 10h43
  2. [CR 2008] Problème pour afficher les paramètres
    Par bens67 dans le forum Débuter
    Réponses: 6
    Dernier message: 03/01/2011, 14h51
  3. TDC; problème pour afficher les items
    Par elise1983 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/10/2007, 16h17
  4. Réponses: 1
    Dernier message: 10/10/2007, 11h02

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