|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Webmaster Inscription : février 2012 Messages : 5 ![]() |
Bonsoir,
J'aimerais quelques pistes pour avancer sur un casse tête qui me tient à cœur. Je cherche à ajouter dans une table de nouvelles valeurs, mais seulement dans certaines conditions, dans l'optique de la réorganisation d'une base de donnée de spécifications techniques. La table en question, nommée fiche_champs, fais le lien entre les critères techniques et les fiches produits en question. Elle comprends les colonnes suivantes : id (id de la relation), id_fiche (id de la fiche produit), id_champs (id d'un critère, correspondant par exemple à "Poids"), id_champs_value (id de la valeur de ce critère, correspondant par exemple à "5 Kg"), string_valeur (intitulé textuel de la valeur : 5-KG), num_valeur (valeur numérique attribuée permettant une recherche avec des opérateurs logiques, par exemple "5") Je cherche donc à ajouter de nouvelles relations à cette base. Par exemple, je vais créer un nouveau champ intitulé "catégorie de poids" et une valeur pour ce même champs intitulée "Lourd". Je vais donc chercher à isoler toutes les entrée de cette table contenant l'"id_champs_value" correspondant à 5 Kg, récupérer les données, et ajouter une nouvelle relation entre les fiches concernées et ma nouvelle valeur Lourd. (Déjà, est-ce que ma démarche vous semble correcte ?) Je calle donc maintenant sur la structure de ma requête. Voici où j'en suis : Code :
D'après vous, est-ce la bonne approche ? Edit : modification du titre pour mieux refléter ma demande + correction de mon erreur de parenthèse |
||
|
|
00
|
|
|
#2 | ||||
|
Membre Expert
![]() Étudiant Inscription : avril 2012 Messages : 611 ![]() |
Bonsoir,
peut tu préciser d'ou vienne tes données , déjà en base, fichier XML, fichier SQL, ... Si tes données sont déjà stocké en BDD tu peut utiliser une requête : Code :
la ou cela devient intéressant c'est que tu peut soumettre la valeur de la colonne categorie_de_poid à une condition avec l'opérateur WHEN ou IF du SQL, elles te permettront si la valeur de num_valeur est supérieur à 50 alors categorie_de_poid vaudra lourd, etc. Donc en une seul requête tu pourra traiter toutes les données de tes différentes tables. Seulement si ces données sont déjà stockées en BDD ^^ EDIT : Ta requête est syntaxiquement fausse : Code :
|
||||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Webmaster Inscription : février 2012 Messages : 5 ![]() |
Pour préciser le contexte, les modifications que je fais sont manuelles, à partir de PHPMyAdmin. Tout se passe dans la même table, fiche_champs
Les données sont pour une partie déjà en base : id_fiche J'ajoute l'autre partie manuellement à ma requête: id_champs, id_champs_value, string_valeur, num_valeur En décomposant mon objectif, voici les étapes que j'identifie : J'aimerais récupérer la liste de toutes les fiches (id_fiche) ayant pour le critère X (id_champs) une valeur Y (id_champs_value). À partir de cette liste, je veux insérer de nouvelles entrées dans cette même table, sans devoir spécifier manuellement id_fiche. Une entrée doit être créée automatiquement pour chacune des fiches identifiées, en spécifiant moi-même l'association critère A (id_champs) et valeurs B (id_champs_value). Par contre je n'ai pas de colonne catégorie de poids, cela correspond dans mon cas à un critère (id_champ), et Lourd correspond à une valeur (id_champs_value). Ces critères et valeurs sont eux stockées dans une autre table, certainement pour pouvoir rendre leur modification plus simple via l'interface d'admin. La table fiche_champs sert juste de liaison entre l'ID d'une fiche, l'ID d'un critère et l'ID de la valeur de ce critère pour résumer. Merci beaucoup en tout cas, je n'avais pas repéré cette grossière erreur de parenthèse |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Webmaster Inscription : février 2012 Messages : 5 ![]() |
Comme j'ai l'impression que mon raisonnement n'est pas le bon, quelle serait votre approche pour arriver à l'objectif décrit ?
Je ne cherche pas une requête toute pré-machée mais plutôt un raisonnement logique sur lequel me baser pour avancer |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com