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 MySQL Discussion :

Problème requête 33 doublons


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Autoentrepreuneur
    Inscrit en
    Mai 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autoentrepreuneur

    Informations forums :
    Inscription : Mai 2012
    Messages : 50
    Points : 37
    Points
    37
    Par défaut Problème requête 33 doublons
    Bonjour,
    J'essaye de récupérer différents champs via l'id d'une table appelé frais_fonctionnement.
    voila la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT frais_fonctionnement.id, frais_fonctionnement.nom AS categorie, frais_categorie.nom AS souscategorie, frais_sous_categorie.nom AS sssscategorie, frais_facture.fournisseur, frais_facture.objet, frais_facture.date_facture, frais_facture.numero_facture, frais_facture.montant_facture, frais_facture.tva, frais_facture.date_limite, pole.nom, fournisseur.nom, frais_reglement.date, frais_reglement.montant, frais_reglement.tva, frais_reglement.type_reglement, frais_reglement.cheque, frais_reglement.compte_bancaire
    FROM frais_fonctionnement, frais_categorie, frais_sous_categorie, frais_facture, pole, fournisseur, frais_reglement
    WHERE 
    frais_fonctionnement.id =13
    AND frais_fonctionnement.id = frais_categorie.idFrais
    AND frais_categorie.id = frais_sous_categorie.idCategorie
    AND frais_sous_categorie.id = frais_facture.idSous_Categorie
    AND frais_facture.pole = pole.id
    AND frais_facture.fournisseur = fournisseur.id
    ORDER BY frais_facture.numero_facture
    Voila alors la requête marche mais elle m'affiche 33 doublons a chaque fois et par ligne soit sur 100 lignes qu'elle dois me sortir, elle me sors 3300 lignes.... Je ne vois pas ou est l'erreur.
    J'ai essayé de mettre un DISTINCT ya un petit plus mais pas grand chose.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    Utilisez la syntaxe normalisée pour les jointure (inner join ... http://sqlpro.developpez.com/cours/s...ointures/#LIII) et vous trouverez votre problème.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Autoentrepreuneur
    Inscrit en
    Mai 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autoentrepreuneur

    Informations forums :
    Inscription : Mai 2012
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    j'ai essayé et ça donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT frais_fonctionnement.id, frais_fonctionnement.nom AS categorie, frais_categorie.nom AS souscategorie, frais_sous_categorie.nom AS sssscategorie, frais_facture.fournisseur, frais_facture.objet, frais_facture.date_facture, frais_facture.numero_facture, frais_facture.montant_facture, frais_facture.tva, frais_facture.date_limite, pole.nom, fournisseur.nom, frais_reglement.date, frais_reglement.montant, frais_reglement.tva, frais_reglement.type_reglement, frais_reglement.cheque, frais_reglement.compte_bancaire
     
    FROM frais_fonctionnement
    INNER JOIN frais_categorie ON frais_fonctionnement.id = frais_categorie.idFrais
    INNER JOIN frais_sous_categorie ON frais_categorie.id = frais_sous_categorie.idCategorie
    INNER JOIN frais_facture ON frais_sous_categorie.id = frais_facture.idSous_Categorie
    INNER JOIN pole ON frais_facture.pole = pole.id
    INNER JOIN fournisseur ON frais_facture.fournisseur = fournisseur.id
    INNER JOIN frais_reglement ON frais_facture.idFrais = frais_reglement.id
    INNER JOIN frais_fonctionnement.id = 13
    Mais j'ai encore une erreur : #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '13 LIMIT 0,30' at line 10

    P.S.: Je suis pas trés bon en SQL!

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Autoentrepreuneur
    Inscrit en
    Mai 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autoentrepreuneur

    Informations forums :
    Inscription : Mai 2012
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    J'ai trouvé l'erreur, dans la premiére requête j'avais oublié de faire le lien avec la table frais_reglement. Merci a toi punkoff!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème requête suppression doublons
    Par stephane.julien dans le forum Langage SQL
    Réponses: 5
    Dernier message: 25/08/2009, 10h07
  2. erreur3073 Problème requête
    Par amel123456789 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 01/04/2004, 11h15
  3. Problème requête qui renvoie plusieurs
    Par dai.kaioh dans le forum Langage SQL
    Réponses: 6
    Dernier message: 01/04/2004, 11h07
  4. Problème requête avec UNION et ORDER BY
    Par Yann21 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/12/2003, 12h02
  5. Réponses: 8
    Dernier message: 23/10/2003, 17h22

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