Requête MySQL

Ania5 Messages postés 72 Date d'inscription mercredi 9 novembre 2011 Statut Membre Dernière intervention 27 avril 2013 - 24 nov. 2012 à 10:31
Ania5 Messages postés 72 Date d'inscription mercredi 9 novembre 2011 Statut Membre Dernière intervention 27 avril 2013 - 26 nov. 2012 à 18:41
Bonjour,
Je veux récupérer un champ à partir d'une table plusieurs fois avec des conditions différents voile ma requête :
SELECT design_param as designParam1,design_param as designParam2,design_param as designParam3,design_param as designParam4,design_param as designParam5,design_param as designParam6,design_param as designParam7,design_param as designParam8,design_param as designParam9,design_param as designParam10
FROM options,parametrage
WHERE parametrage.id_param = options.id_param
AND designParam7='Format' AND designParam6='Choix'

Mais ça marche pas.
Merci de bien vouloir m'aider

7 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 nov. 2012 à 12:31
Salut

Organisation de table vraiment bizarre et mal conçue.

Pourquoi utiliser la table 'options' alors que tu ne t'en sers ni dans le Select ni dans le Where ?
Un truc à planter le moteur, ça.
Surtout qu'il n'y a pas assez de clause Where dans ta requète : Comment le moteur va t-il choisir les lignes ?

Si tu dois récupérer des champs différents d'une même table, il faut créer autant d'instance de la table que de champ.
Exemple avec 3 champs :
Select T1.design_param as designparam1,
       T2.design_param as designparam2,
       T3.design_param as designparam3
  From parametrage T1, parametrage T2, parametrage T3
 Where // ici, une combinaison de conditions pour sélectionner
       // les lignes; une combinaison pour chacune des T1, T2 et T3
       // par exemple :
       T1.id_param = 4012
   And T2.id_param = 4012
   And T3.id_param = 4012

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 nov. 2012 à 12:38
Mais je ne vois pas comment cela pourra marcher ...
En fait, tu veux mettre à l'horizontal des données stockées à la verticale, genre de transposition.

Pour y voir plus clair, il faudrait que tu donnes un exemple :
- de la structure de ta table parametrage (quels sont les champs qui la composent)
- des données des champs qu'elle renferme
- de ce que tu voudrait voir dans ton recordset
- que tu nous précise de quel type est ton recordset (dimensionné comment)
- que tu confirmes que tu fais du VB.Net
0
Ania5 Messages postés 72 Date d'inscription mercredi 9 novembre 2011 Statut Membre Dernière intervention 27 avril 2013 1
24 nov. 2012 à 13:00
Merci Jack je vais tester votre proposition.
0
Ania5 Messages postés 72 Date d'inscription mercredi 9 novembre 2011 Statut Membre Dernière intervention 27 avril 2013 1
26 nov. 2012 à 12:29
Bonjour,
SVP Je veux savoir si cette requête est correcte :

Select T1.design_param as designparam1,T2.design_param as designparam2,T3.design_param as designparam3, T4.design_param as designparam4,T5.design_param as designparam5, T6.design_param as designparam6, T7.design_param as designparam7, T8.design_param as designparam8,T9.design_param as designparam9, T10.design_param as designparam10,nomination_classe
From parametrage T1, parametrage T2, parametrage T3,parametrage T4, parametrage T5, parametrage T6,parametrage T7, parametrage T8, parametrage T9,parametrage T10,classe,option_param_classe
Where (T1.id_param=option_param_classe.id_param and T2.id_param=option_param_classe.id_param and T3.id_param=option_param_classe.id_param and T4.id_param=option_param_classe.id_param and T5.id_param=option_param_classe.id_param and T6.id_param=option_param_classe.id_param and T7.id_param=option_param_classe.id_param and T8.id_param=option_param_classe.id_param and T9.id_param=option_param_classe.id_param and T10.id_param=option_param_classe.id_param) and option_param_classe.id_classe=classe.id_classe
and T1.design_param = 'Classe papier'
And T2.design_param = 'Peliculage'
and T3.design_param ='Couleur papier'
and T4.design_param ='Couleur impression'
and T5.design_param ='Grammage'
and T6.design_param ='choix'
and T7.design_param ='format'
and T8.design_param ='format final'
and T9.design_param ='Mesure/kg dans la bobine'
and T10.design_param ='NULL'
and option_param_classe.id_classe=1
and nomination_classe='Flyers standard'

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 nov. 2012 à 16:16
Présentée comme ça, c'est illisible.
Utilise la coloration syntaxique (3ème icone à droite) qui, en plus de la couleur pour du code, conserve les indentations (espaces de début de ligne)
Select T1.design_param as designparam1,
       T2.design_param as designparam2,
       T3.design_param as designparam3,
       T4.design_param as designparam4,
       T5.design_param as designparam5, 
       T6.design_param as designparam6, 
       T7.design_param as designparam7, 
       T8.design_param as designparam8,
       T9.design_param as designparam9, 
       T10.design_param as designparam10,
       nomination_classe
  From parametrage T1, 
       parametrage T2, 
       parametrage T3,
       parametrage T4, 
       parametrage T5, 
       parametrage T6,
       parametrage T7, 
       parametrage T8, 
       parametrage T9,
       parametrage T10,
       classe,
       option_param_classe
 Where T1.id_param = option_param_classe.id_param
   and T2.id_param = option_param_classe.id_param
   and T3.id_param = option_param_classe.id_param 
   and T4.id_param = option_param_classe.id_param 
   and T5.id_param = option_param_classe.id_param 
   and T6.id_param = option_param_classe.id_param 
   and T7.id_param = option_param_classe.id_param 
   and T8.id_param = option_param_classe.id_param 
   and T9.id_param = option_param_classe.id_param 
   and T10.id_param = option_param_classe.id_param 
   and option_param_classe.id_classe = classe.id_classe
   and T1.design_param = 'Classe papier'
   And T2.design_param = 'Peliculage'
   and T3.design_param = 'Couleur papier'
   and T4.design_param = 'Couleur impression'
   and T5.design_param = 'Grammage'
   and T6.design_param = 'choix'
   and T7.design_param = 'format'
   and T8.design_param = 'format final'
   and T9.design_param = 'Mesure/kg dans la bobine'
   and T10.design_param = 'NULL'
   and option_param_classe.id_classe = 1
   and nomination_classe = 'Flyers standard'
Déjà plus lisible ainsi.
J'ai supprimé la paranthèse qui ne sert à rien, ajouté des espaces pour clarifier les termes.
Côté requète, si tu imposes, par exemple, T7.design_param = 'format', ta requète affichera ce même texte dans la colonne designparam7. Quel intérêt ?
Plus ambêtant pour T10.design_param qui renverra NULL
Ne connaissant pas le contenu de tes tables, difficile de t'en dire plus.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
26 nov. 2012 à 16:25
nomination_classe appartient à quelle table ?
Il devrait y avoir le nom de cette table devant le nom du champ.

Attention aussi : On le répète à longueur de temps sur le forum :
Si le nom des tables ou des champs contiennent des caractères spéciaux (accents, espaces, caractères spéciaux) OU si leur nom peut ressembler à un mot clé du langage (je pense à ta table classe), il est préférable d'encadrer le nom des tables/champs par des crochets [ et ], exemple
maTable.[nomination_classe] ou [classe].[nomination_classe]
Pas obligatoire la plupart du temps, mais peut provoquer des réactions bizarres du moteur, surtout quand la requète est longue et pas facile à débuguer.

Tu déclares la table classe dans le From + une condition dans le Where, mais à mon avis, c'est insuffisant (sauf si nomination_classe appartient à cette table)
0
Ania5 Messages postés 72 Date d'inscription mercredi 9 novembre 2011 Statut Membre Dernière intervention 27 avril 2013 1
26 nov. 2012 à 18:41
Merci bcp Jack oui nomination_classe appartient à la table classe.
0
Rejoignez-nous