|
|
|
#1 (permalink) |
|
Messages: n/a
Hébergeur: |
Bonsoir,
Je cherche un forum en français sur l'utilisation de mysql. Si vous avez ça dans vos tablettes... merci à l'avance ! A tout hasard, voilà le prb: Je classe des fleurs. L'un des champs "petales" contient le nb de petales... (oui !) Mon "enum" offre plusieurs categories : 3,4,5,6à10, plus... Pour certaines fleurs, je voudrais qu'elles répondent vrai à deux catégories... (anemone peut avoir 5 mais aussi 7 ou 8 petales) Pour le moment je ne vois qu'une soluce: enregistrer deux lignes "anemone" l'une avec 5, l'autre avec 6à10.... -- Alain L Mon village en Haute Soule : http://jarailet.club.fr Carnet de voyages: http://jarailet.club.fr/Randobal |
|
|
|
#2 (permalink) |
|
Messages: n/a
Hébergeur: |
--{ alainL a plopé ceci: }--
> Bonsoir, > Je cherche un forum en français sur l'utilisation de mysql. Si vous avez > ça dans vos tablettes... merci à l'avance ! > A suivre sur fr.comp.applications.sgbd > A tout hasard, voilà le prb: > Je classe des fleurs. L'un des champs "petales" contient le nb de > petales... (oui !) Mon "enum" offre plusieurs categories : > 3,4,5,6à10, plus... > Pour certaines fleurs, je voudrais qu'elles répondent vrai à deux > catégories... (anemone peut avoir 5 mais aussi 7 ou 8 petales) > Pour le moment je ne vois qu'une soluce: enregistrer deux lignes > "anemone" l'une avec 5, l'autre avec 6à10.... (hi hi hi) -- A horse will do most of its maintenance itself, but it needs fuel even if you're not using it. |
|
|
|
#3 (permalink) |
|
Messages: n/a
Hébergeur: |
alainL a écrit :
> Bonsoir, > Je cherche un forum en français sur l'utilisation de mysql. Si vous avez > ça dans vos tablettes... merci à l'avance ! fr.comp.applications.sgbd > A tout hasard, voilà le prb: > Je classe des fleurs. L'un des champs "petales" contient le nb de > petales... (oui !) Mon "enum" offre plusieurs categories : 3,4,5,6à10, > plus... > Pour certaines fleurs, je voudrais qu'elles répondent vrai à deux > catégories... (anemone peut avoir 5 mais aussi 7 ou 8 petales) > Pour le moment je ne vois qu'une soluce: enregistrer deux lignes > "anemone" l'une avec 5, l'autre avec 6à10.... Soluce 1 : utilise deux champs nb_petales_min et nb_petales_max. Pour anémone, tu aura nb_petales_min = 5 et nb_petales_max = 8 Soluce 2 : utilise une table liée pour la description du nombre de pétales, avec une relation plusieurs à plusieurs entre fleurs et nombre_petales. Je ne connais pas assez le domaine pour te dire a priori quelle solution est la plus appropriée, mais en gros : si une anémone peut avoir 5 ou 7 ou 8 pétales mais *pas* 6, alors utilise la seconde solution. Voit aussi en fonction des requêtes les plus fréquentes |
|
|
|
#4 (permalink) |
|
Messages: n/a
Hébergeur: |
alainL avait écrit le 26/03/2008 :
> Bonsoir, > Je cherche un forum en français sur l'utilisation de mysql. Si vous avez ça > dans vos tablettes... merci à l'avance ! > > A tout hasard, voilà le prb: > Je classe des fleurs. L'un des champs "petales" contient le nb de petales... > (oui !) Mon "enum" offre plusieurs categories : 3,4,5,6à10, plus... > Pour certaines fleurs, je voudrais qu'elles répondent vrai à deux > catégories... (anemone peut avoir 5 mais aussi 7 ou 8 petales) > Pour le moment je ne vois qu'une soluce: enregistrer deux lignes "anemone" > l'une avec 5, l'autre avec 6à10.... La solution la plus simple serait de changer ton champ ENUM en SET (hyper facile via PHPMyAdmin). Ainsi il pourra avoir comme valeur 1 ou plusieurs valeurs de ta liste, et non plus une seule à la fois. "Un SET est une chaîne qui peut avoir zéro ou plusieurs valeurs, chacune doit être choisie dans une liste de valeurs définies lors de la création de la table. Les valeurs des colonnes SET composées de plusieurs membres sont définies en séparant celles-ci avec des virgules (','). Ce qui fait que la valeur d'un membre de SET ne peut contenir lui même de virgule." Plus d'infos sur http://dev.mysql.com/doc/refman/5.0/fr/set.html -- Olivier Ligny |
|
|
|
#5 (permalink) |
|
Messages: n/a
Hébergeur: |
O.L. a écrit :
> alainL avait écrit le 26/03/2008 : >> Bonsoir, >> Je cherche un forum en français sur l'utilisation de mysql. Si vous >> avez ça dans vos tablettes... merci à l'avance ! >> >> A tout hasard, voilà le prb: >> Je classe des fleurs. L'un des champs "petales" contient le nb de >> petales... (oui !) Mon "enum" offre plusieurs categories : >> 3,4,5,6à10, plus... >> Pour certaines fleurs, je voudrais qu'elles répondent vrai à deux >> catégories... (anemone peut avoir 5 mais aussi 7 ou 8 petales) >> Pour le moment je ne vois qu'une soluce: enregistrer deux lignes >> "anemone" l'une avec 5, l'autre avec 6à10.... > > La solution la plus simple serait de changer ton champ ENUM en SET > (hyper facile via PHPMyAdmin). > Ainsi il pourra avoir comme valeur 1 ou plusieurs valeurs de ta liste, > et non plus une seule à la fois. > > "Un SET est une chaîne qui peut avoir zéro ou plusieurs valeurs, chacune > doit être choisie dans une liste de valeurs définies lors de la création > de la table. Les valeurs des colonnes SET composées de plusieurs membres > sont définies en séparant celles-ci avec des virgules (','). Ce qui fait > que la valeur d'un membre de SET ne peut contenir lui même de virgule." > > Plus d'infos sur http://dev.mysql.com/doc/refman/5.0/fr/set.html > Merci. Bon sang ! C'est magnifique ça ! J'avais pensé comme Bruno, à créer deux champs mini et maxi mais là, c'est le top ! Donc, je crée un champ "nb_petales" SET pouvant valoir "4" ou "5" ou "5,6,7,8" (entrée à la souris ds une liste box, j'aurai 400 fleurs à marquer) Et pour la requete: select from.... where nb_petales like '%nb_petales%' ?? elle sera capable de pêcher le "6" dans "5,6,7,8" ?? -- Alain L Mon village en Haute Soule : http://jarailet.club.fr Carnet de voyages: http://jarailet.club.fr/Randobal |
|
|
|
#6 (permalink) |
|
Messages: n/a
Hébergeur: |
alainL wrote:
> Et pour la requete: > select from.... where nb_petales like '%nb_petales%' ?? > elle sera capable de pêcher le "6" dans "5,6,7,8" ?? Oui mais ce n'est pas "bien", si tu as "16" ou "65", tu auras un retour. Tu peux utiliser WHERE FIND_IN_SET('6', nb_petales) -- Réseau IRC Francophone: http://www.zeolia.net Aide et astuces webmasters : http://www.c-p-f.org Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr |
|
|
|
#7 (permalink) |
|
Messages: n/a
Hébergeur: |
alainL a formulé la demande :
> O.L. a écrit : >> alainL avait écrit le 26/03/2008 : >>> Bonsoir, >>> Je cherche un forum en français sur l'utilisation de mysql. Si vous avez >>> ça dans vos tablettes... merci à l'avance ! >>> >>> A tout hasard, voilà le prb: >>> Je classe des fleurs. L'un des champs "petales" contient le nb de >>> petales... (oui !) Mon "enum" offre plusieurs categories : 3,4,5,6à10, >>> plus... >>> Pour certaines fleurs, je voudrais qu'elles répondent vrai à deux >>> catégories... (anemone peut avoir 5 mais aussi 7 ou 8 petales) >>> Pour le moment je ne vois qu'une soluce: enregistrer deux lignes "anemone" >>> l'une avec 5, l'autre avec 6à10.... >> >> La solution la plus simple serait de changer ton champ ENUM en SET (hyper >> facile via PHPMyAdmin). >> Ainsi il pourra avoir comme valeur 1 ou plusieurs valeurs de ta liste, et >> non plus une seule à la fois. >> >> "Un SET est une chaîne qui peut avoir zéro ou plusieurs valeurs, chacune >> doit être choisie dans une liste de valeurs définies lors de la création de >> la table. Les valeurs des colonnes SET composées de plusieurs membres sont >> définies en séparant celles-ci avec des virgules (','). Ce qui fait que la >> valeur d'un membre de SET ne peut contenir lui même de virgule." >> >> Plus d'infos sur http://dev.mysql.com/doc/refman/5.0/fr/set.html >> > Merci. > Bon sang ! C'est magnifique ça ! J'avais pensé comme Bruno, à créer deux > champs mini et maxi mais là, c'est le top ! > Donc, je crée un champ "nb_petales" SET pouvant valoir "4" ou "5" ou > "5,6,7,8" (entrée à la souris ds une liste box, j'aurai 400 fleurs à marquer) > > Et pour la requete: > select from.... where nb_petales like '%nb_petales%' ?? > elle sera capable de pêcher le "6" dans "5,6,7,8" ?? Oui tout à fait. Mais ce n'est pas la seule méthode, cf. la doc : Normalement, vous exécuterez un SELECT sur une colonne SET en utilisant l'opérateur LIKE ou la fonction FIND_IN_SET() : mysql> SELECT * FROM nom_de_table WHERE set_col LIKE '%value%'; mysql> SELECT * FROM nom_de_table WHERE FIND_IN_SET('value',set_col)>0; Mais ce qui suit fonctionnera aussi : mysql> SELECT * FROM nom_de_table WHERE set_col = 'val1,val2'; mysql> SELECT * FROM nom_de_table WHERE set_col & 1; La première requête cherche les lignes qui correspondent exactement. La seconde ne cherche que les lignes contenant le premier membre du set. -- Olivier Ligny |
|
|
|
#8 (permalink) |
|
Messages: n/a
Hébergeur: |
CrazyCat a écrit :
> alainL wrote: >> Et pour la requete: >> select from.... where nb_petales like '%nb_petales%' ?? >> elle sera capable de pêcher le "6" dans "5,6,7,8" ?? > > Oui mais ce n'est pas "bien", si tu as "16" ou "65", tu auras un retour. > Tu peux utiliser WHERE FIND_IN_SET('6', nb_petales) > Probleme de structure du set. J'ai beau jongler avec les guillemets, virgules et espaces, je ne peux entrer que les valeurs contenant un seul nombre. Voici la syntaxe de mon set, mySQL(4;0;15) m'a refusé ou modifié pas mal d'autres. set('', '0, 1, 2, 3', '4', '5, 6, 7, 8, 9, 10', '6', '11') 4 ou 6 ou 11 sont acceptés et apparaissent dans la table, mais pas "0,1,2,3" -- Alain L Mon village en Haute Soule : http://jarailet.club.fr Carnet de voyages: http://jarailet.club.fr/Randobal |
|
![]() |
| Outils de la discussion | |
|
|