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 :

[MySQL] Problème requete SQL sur plusieurs tables


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 29
    Par défaut [MySQL] Problème requete SQL sur plusieurs tables
    Bonjour, je fais un doublon de mon post ici que j'ai déja écrit dans le forum MySQL car je me dis qu'il était peut ètre pas au bon endroit ! Donc voila je vous fais un copier coller du post, si des fois des personnes de ce forum ont plus d'idées ... Désolé aux modos, s'ils veulent en suppr un ou faire un déplacement ca serait normal.
    Précision : je travaille sous VB.NET Express et MySQL

    Bonjour j'écris ce post car j'ai un petit souci avec une requete SQL qui ne fait plus ce qu'elle doit et je ne vois pas trop pourquoi !

    En fait je voudrais afficher plusieurs champs de plusieurs enregistrements sur plusieurs tables a partir d'une donnée. La sélection se fait dans une listbox et l'affichage dans une listview. Le problème est que la requete n'affiche pas tous les enregistrements qu'elle devrait retourner, elle retourne toutes les infos demandées de cet enregistrement mais n'en retourne qu'un seul et que le 1er ... Donc je me dis que c'est peut ètre un problème de boucle ... Et vu que je débute en base de donnée ... C'est bien possible de récupérer plusieurs infos de plusieurs enregistrements ? J'ai d'autres requetes qui récupère plusieurs enregistrements mais c'est la seule qui récupère des infos un peu partout donc je me pose des questions ... Bon assez parlé voici le code de la requete dans mon formulaire VB

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MyCommand.CommandText = "SELECT `type`,`ordre`,`nom_motif`,`dateCrea`,`dateValide`,`nom_fournisseur`,`util`,`outil`,`valide`" _
         & "FROM `tp_modele`, `ts_modele_motif`,`tp_motif`,`td_fournisseur`" _
         & "WHERE `tp_motif`.`num_motif` = `ts_modele_motif`.`#num_motif`" _
         & "AND `ts_modele_motif`.`#num_modele` = `tp_modele`.`num_modele`" _
         & "AND `td_fournisseur`.`num_fournisseur` = `tp_motif`.`#num_fournisseur` " _
         & "AND `tp_modele`.`nom_modele` = " & "'" & text & "'"
    Quelques détails :
    Voici le modèle conceptuel des tables
    tp_modele(num_modele, nom_modele)
    ts_modele_motif(num_visuel,#num_modele,#num_motif)
    tp_motif(num_motif, nom_motif, type, #num_visuel, ordre, valide, util, #num_fournisseur, outil, dateCrea, dateValide, motCle, comm)
    td_fournisseur(num_fournisseur, nom_fournisseur)

    variable text = donnée sélectionnée dans la listbox qui représente le nom du modèle et je veux recup les infos des motifs associés.

    Voila si mes explications sont pas claires dites le et si quelqu'un a une idée je suis preneur, merci d'avance !

  2. #2
    Membre éclairé Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Par défaut
    Salut,
    J'ai d'abord 2 questions à te poser pour etre sur de bien comprendre :
    Dans ta listbox, tu sélectionne une ou plusieurs données ?
    Les # que l'on peut voir devant certains champs, est-ce vraiment le nom du champ ou le formalisme des clés étrangère de ton MLD ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 29
    Par défaut
    Bonjour, d'abord merci a toi de t'intéresser a mon problème !

    Alors pour apporter des précisions : oui dans ma listbox je sélectionne une seule donnée : le nom du modèle, je fais ensuite la requète SELECT pour récupérer les informations sur le(s) motifs associés a ce modèle. Pour comprendre un peu mieux en fait je développe une appli pour une entreprise de broderie. Le modèle étant par exemple un tee shirt et les motifs les dessins séparés sur le modèle. Quand ils font une recherche par nom de tee shirt (modèle) ils ont besoin de voir les dessins (motifs) associés a ce modèle et les informations de ces dessins qui sont stockés dans différentes tables tp_motif et td_fournisseur (arf je viens de voir que j'ai oublié de mettre le schéma de la table td_fournisseur dans mon 1er post, je vais faire un edit) avec les relations entre le modèle et motifs stockés dans la table ts_modele_motif.

    Les # qu'on voit sur certains champs sont juste une normalisation que j'utilise pour désigner les clés étrangères en effet.

    Merci

  4. #4
    Membre éclairé Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Par défaut
    Je t'en prie, ce forum est fait pour ça
    Bon très bien, maintenant dans ton code les # sont-ils bien présents ? si oui c'est à cause de ça que ta requete ne marche pas car tu les mets pour faire tes jointures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    "SELECT type, ordre, nom_motif, dateCrea, dateValide, nom_fournisseur, util, outil, valide
    FROM tp_modele, ts_modele_motif, tp_motif, td_fournisseur
    WHERE tp_motif.num_motif=ts_modele_motif.num_motif
    AND ts_modele_motif.num_modele=tp_modele.num_modele
    AND td_fournisseur.num_fournisseur=tp_motif.num_fournisseur
    AND tp_modele.nom_modele= '" & "''" & text & "'"
    Sinon j'y connais rien à VB.net mais est ce que les ` sont nécessaires ?
    Et je trouve assez bizarre la facon dont tu inséres ta variable dans ta requête mais c'est peut etre normal. Quel est le nom de cette variable en fait ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 29
    Par défaut
    En fait les # sont présents dans le nom des champs dès le code de création des tables et ceci grace aux ` justement, si je ne me trompe, c'est une norme de MySQL pour protéger le nom des champs si je les enlève dans ma requete, je crois qu'il provoque une erreur car SQL ne reconnais pas les # ... En tout cas la requete marche mais ne renvoie que le 1er enregistrement mais avec toutes les infos nécéssaires ... Ou ca vient de la syntaxe et j'ai pas tout compris ...

    Pour ma variable, je l'insères dans ma requete en la protegeant par les ` et son nom est "text" elle est de type STRING. Que trouve tu de bizarre ? Il y a une meilleure méthode ? Merci

  6. #6
    Membre éclairé Avatar de griese
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    646
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 646
    Par défaut
    Attends, si je comprend bien pour un modèle donné, tu peux avoir plusieurs lignes qui correpondent dans ta base de données et la requete ne te retourne que le premier ? C'est ça ? Si c'est ça ca viens surement de ton code VB et non de ton SQL car je sais que sous php il faut afficher les résultats dans une boucle while pour pouvoir avoir toutes les lignes sinon il n'en ressort qu'une. C'est surement pareil avec VB ? Sinon pour ta variable pourquoi tu met des &, et pourquoi tu les sépares par des "''" ?

Discussions similaires

  1. [MySQL]Requete SQL sur 2 tables
    Par Khleo dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/02/2008, 00h42
  2. requêtes sql sur plusieurs tables
    Par zahiton dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/11/2005, 10h59
  3. [SQL] requêtes SQL sur plusieurs tables
    Par zahiton dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/11/2005, 16h32
  4. Ecrire une requete SQL sur plusieurs lignes
    Par PrinceMaster77 dans le forum ASP
    Réponses: 2
    Dernier message: 15/11/2004, 14h47
  5. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26

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