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

Requêtes et SQL. Discussion :

Problème de requête recherche


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 34
    Points : 16
    Points
    16
    Par défaut Problème de requête recherche
    Bonjour,

    j'ai une base de donnée avec plusieurs tables : salle, pc , ecran, imprimante

    j'ai créé une requête qui affiche tout les pc écrans et imprimantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT DISTINCT *
    From ecran, uc, imprimante, salle
    Where salle.numsalle=ecran.numsalle
    And salle.numsalle=uc.numsalle
    And salle.numsalle=imprimante.numsalle
    And salle.numsalle=[Saisir salle:]
    mais le problème c'est qu'il m'affiche le même enregistrement plusieurs fois, donc plus de 300 enregistrments alors que dans ma base je dois en avoir que 200

    Merci de votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 651
    Points : 34 360
    Points
    34 360
    Par défaut
    salut,
    2 choses à voir :
    - utilise des jointures pour ta requête
    - liste les champs à la place de ton *

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT DISTINCT salle.numsalle, ecran.numecran, ecran.marqueecr, ecran.modeleecr, ecran.typeecr, uc.numuc, processeur, cartemere, imprimante.numimprimante, imprimante.marqueimp, imprimante.modeleimp
    FROM ecran, uc, salle, imprimante
    WHERE salle.numsalle=ecran.numsalle
    AND salle.numsalle=uc.numsalle
    AND salle.numsalle=imprimante.numsalle
    AND salle.numsalle=[Saisir salle:]
    toujours pas, il faudrait peut être que je regroupe par imprimante, uc et écran ?

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 651
    Points : 34 360
    Points
    34 360
    Par défaut
    et ca donne quoi alors ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    marche pâs j'ai edité mon post d'avant

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 651
    Points : 34 360
    Points
    34 360
    Par défaut
    ok, alors maintenant transforme les WHERE = par des INNER JOIN

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT salle.numsalle, ecran.numecran, ecran.marqueecr, ecran.modeleecr, ecran.typeecr, uc.numuc, processeur, cartemere, imprimante.numimprimante, imprimante.marqueimp, imprimante.modeleimp
    FROM Salle
    INNER JOIN  ecran ON salle.numsalle=ecran.numsalle
    INNER JOIN  uc ON salle.numsalle=uc.numsalle
    INNER JOIN  imprimante ON salle.numsalle=imprimante.numsalle
    where salle.numsalle=[numéro salle]
    Erreur de syntaxe, j'ai du mal avec les INNER JOIN

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 651
    Points : 34 360
    Points
    34 360
    Par défaut
    utilise l'interface access pour créer tes jointures, ca te mettra les parenthèses aux bons endroits

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT salle.numsalle, Ecran.NumEcran, Ecran.MarqueEcr, Ecran.ModeleEcr, Ecran.TypeEcr, Imprimante.NumImprimante, Imprimante.MarqueImp, Imprimante.ModeleImp, Imprimante.Reseau, Imprimante.MarqueCartouche, Imprimante.NumCartouche, UC.NumUC, UC.Processeur, UC.TypeRam, UC.CapacitéRam, UC.CarteMere, UC.DD, UC.NomUC, UC.Office, UC.Logiciel
    FROM ((Salle INNER JOIN Imprimante ON Salle.[Numsalle] = Imprimante.[NumSalle]) INNER JOIN UC ON Salle.[Numsalle] = UC.[NumSalle]) INNER JOIN Ecran ON Salle.[Numsalle] = Ecran.[NumSalle]
    WHERE salle.numsalle=[numéro salle]
    Toujours pareil

  10. #10
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    La requête que tu écris ne correspond pas à ta question

    Interesse toi au mot clé UNION. Ici tu dois lister plusieurs ensembles. C'est donc une requête UNION

    (Selection des UC
    UNION
    Selection des Ecran
    UNION
    Selection des Imprimantes
    )

    Le tout sera joint à la table SALLE pour l'affichage de la salle.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 34
    Points : 16
    Points
    16
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT ecran.numecran, ecran.marqueecr, ecran.modeleecr, ecran.typeecr FROM ecran
    UNION
    SELECT numuc, processeur, typeram, capacitéram, cartemere, dd, office, logiciel FROM uc
    UNION
    SELECT numimprimante, marqueimp, modeleimp, reseau, marquecartouche, numcartouche FROM imprimante
    UNION
    SELECT numsalle FROM salle
    where salle.numsalle=uc.numsalle
    and salle.numsalle=imprimante.numsalle
    and salle.numsalle=ecran.numsalle
    and salle.numsalle=[saisir salle]
    Erreur: "Le nombre de colonnes dans les deux tables ou requête sélectionnées d'une requête Union ne correspondent pas."

    j'ai encore fait une faute ??
    J'ai aussi essayé de faire avec des sous requête mais même proobleme...

Discussions similaires

  1. Réponses: 7
    Dernier message: 24/09/2012, 23h12
  2. Problème de requètes concurentes
    Par Emmanuel.G dans le forum XMLRAD
    Réponses: 3
    Dernier message: 08/08/2003, 16h51
  3. Réponses: 2
    Dernier message: 16/07/2003, 14h40
  4. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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