PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > fr.comp.info.auteurs > mysql
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
mysql

Réponse
 
LinkBack Outils de la discussion
Vieux 26/03/2008, 19h03   #1 (permalink)
alainL
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut mysql

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
  Réponse avec citation
Vieux 26/03/2008, 20h32   #2 (permalink)
Thierry B.
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: mysql

--{ 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.
  Réponse avec citation
Vieux 27/03/2008, 10h59   #3 (permalink)
Bruno Desthuilliers
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: mysql

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


  Réponse avec citation
Vieux 27/03/2008, 12h53   #4 (permalink)
O.L.
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: mysql

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


  Réponse avec citation
Vieux 27/03/2008, 17h28   #5 (permalink)
alainL
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: mysql

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
  Réponse avec citation
Vieux 27/03/2008, 17h38   #6 (permalink)
CrazyCat
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: mysql

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
  Réponse avec citation
Vieux 27/03/2008, 17h40   #7 (permalink)
O.L.
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: mysql

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


  Réponse avec citation
Vieux 27/03/2008, 18h08   #8 (permalink)
alainL
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: mysql

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
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 15h02.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,84211 seconds with 16 queries