par
ouckileou » 23 nov. 2005, 20:02
Salut,
pour les types : tu as choisi Int, pour age_min et age_max, ainsi que pour l'id_categorie.
C'est un peu disproportionné :
"L'intervalle de validité pour les entiers signés est de -2147483648 à 2147483647."
Hors tu ne stockeras ici qu'un âge (de 0 à 150, voyons large) et tu n'auras a priori qu'une dizaine ou quinzaine de catégorie en tout. Tu pourrais donc choisir un type Tinyint, qui permet d'aller de 0 à 255 en UNSIGNED. Cela suffira et ça prendra moins de place disque (Tinyint 1 octet, Integer 4 octets,
voir ici)
La documentation sur les types numériques :
http://dev.mysql.com/doc/refman/5.0/fr/ ... rview.html
C'est peut-être un peu chipoter, mais autant prendre de bonnes habitudes dès maintenant, il y a des cas ou c'est important de bien choisir ses types pour optimiser la base.
Quand à ton erreur, c'est très simple :
tu manipules dans ta requête 2 tables, qui contiennent toutes les deux une colonne "sexe". Il faut donc indiquer de quelle table tu parles lorsque tu mentionnes cette colonne

Comme ici :
Au passage tu as gardé "p" et "c" comme alias pour tes tables, mais tu n'as pas les mêmes noms de tables, tu devrais peut-être adapter tes alias à tes noms, ce sera plus clair pour toi
Salut,
pour les types : tu as choisi Int, pour age_min et age_max, ainsi que pour l'id_categorie.
C'est un peu disproportionné :
"L'intervalle de validité pour les entiers signés est de -2147483648 à 2147483647."
Hors tu ne stockeras ici qu'un âge (de 0 à 150, voyons large) et tu n'auras a priori qu'une dizaine ou quinzaine de catégorie en tout. Tu pourrais donc choisir un type Tinyint, qui permet d'aller de 0 à 255 en UNSIGNED. Cela suffira et ça prendra moins de place disque (Tinyint 1 octet, Integer 4 octets, [url=http://dev.mysql.com/doc/refman/5.0/fr/storage-requirements.html]voir ici[/url])
La documentation sur les types numériques :
http://dev.mysql.com/doc/refman/5.0/fr/numeric-type-overview.html
C'est peut-être un peu chipoter, mais autant prendre de bonnes habitudes dès maintenant, il y a des cas ou c'est important de bien choisir ses types pour optimiser la base.
Quand à ton erreur, c'est très simple :
tu manipules dans ta requête 2 tables, qui contiennent toutes les deux une colonne "sexe". Il faut donc indiquer de quelle table tu parles lorsque tu mentionnes cette colonne ;)
Comme ici :
[code]
ON p.sexe = c.sexe
[/code]
Au passage tu as gardé "p" et "c" comme alias pour tes tables, mais tu n'as pas les mêmes noms de tables, tu devrais peut-être adapter tes alias à tes noms, ce sera plus clair pour toi