|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() KONEInscription : juin 2004 Messages : 109 ![]() |
Bonjour. je fais un site web, ou je demande aux visiteurs leurs passe-temps. Plusieurs choix sont possibles.
Les modalites sont par exemple: choix1: Tele Choix2: Plage Choix3: Restaurant Choix4: Famille Choix5: Amis Si le visiteur coche un choix, cela est representé par 1 et 0 sinon. Par exemple s'il fait les choix 2-3-5 j'encode sa reponse comme choix=01101. Ensuite j'utilise la fonction bindec("01101"). Dans ma base j'ai un seul champ choix ou j'enregistre bindec("01101") par exemple 623. je veux faire une requete sql pour selectionner les visiteurs aimant la plage (choix2) et les restaurants (choix3). Je ne sais vraiment pas quelle requete ecrire qui puisse selectionner ces membres. Merci de bien vouloir me donner un coup de main.
__________________
Une somme de savoirs en chaque matière, si minime soit-elle, rend n'importe quel benêt, dans un pays de benêts, docte.
|
|
|
00
|
|
|
#2 | |||
![]() ![]() |
Une base de données n'est pas un tableur !
![]() Si plus tard tu ajoutes des choix, tu dois revoir ton code, avec tous les risques d'erreur que cela comporte. Tu devrais avoir le MCD suivant : Visiteur -0,n----Avoir----0,n- Passe-temps Ce qui engendrera 3 tables : Visiteur (vis_id, vis_nom...) Passe_temps (pst_id, pst_libelle) Avoir (avr_id_visiteur, avr_id_passe_temps) Venons-en à ton besoin : Citation:
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||
|
00
|
|
|
#3 |
|
Membre du Club
![]() KONEInscription : juin 2004 Messages : 109 ![]() |
Merci CinePhil pour ta suggestion qui m'a été très utile. J'ai créé les tables.
Mais dans l'exemple de requete que tu m'a proposé, je ne comprend pas la dernière partie: Si je peux avoir une petite explication. Merci d'avance
__________________
Une somme de savoirs en chaque matière, si minime soit-elle, rend n'importe quel benêt, dans un pays de benêts, docte.
|
|
|
00
|
|
|
#4 | |||||||||
![]() ![]() |
HAVING est un WHERE qui agit sur le résultat d'un regroupement.
Quelqu'un qui aime à la fois la plage et le restaurant aura deux lignes de résultat sans le GROUP BY. L'idée est donc de regrouper par visiteur et de compter ces lignes. Comme il y a deux passe-temps à prendre en compte et qu'on veut ne conserver que ceux qui aiment à la fois la plage et le restaurant, il faut donc que le comptage des lignes soit de deux. Je reprends ma structure : Citation:
Visiteur (vis_id, vis_nom...) 1, ecarbill 2, CinéPhil 3, GrosBill 4, PetiteFleur Passe_temps (pst_id, pst_libelle) 1, Télé 2. Plage 3, Restaurant 4, Famille 5, Amis Avoir (avr_id_visiteur, avr_id_passe_temps) 1, 2 1, 3 1, 4 2, 2 2, 3 2, 4 2, 5 3, 1 3, 2 4, 2 4, 5 Exécutons la requête sans condition ni groupement : Code :
1, ecarbill, Plage 1, ecarbill, Restaurant 1, ecarbill, Famille 2, CinéPhil, Plage 2, CinéPhil, Restaurant 2, CinéPhil, Famille 2, CinéPhil, Amis 3, GrosBill, Télé 3, GrosBill, Plage 4, PetiteFleur, Plage 4, PetiteFleur, Amis Ajoutons le WHERE : Code :
1, ecarbill, Plage 1, ecarbill, Restaurant 2, CinéPhil, Plage 2, CinéPhil, Restaurant 3, GrosBill, Plage 4, PetiteFleur, Plage On voit que ceux qui répondent aux 2 critères ont 2 ligne de résultat. Ajoutons le comptage et le GROUP BY : Code :
1, ecarbill, 2 2, CinéPhil, 2 3, GrosBill, 1 4, PetiteFleur, 1 Ajoutons le HAVING : Code :
1, ecarbill, 2 2, CinéPhil, 2
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||||||||
|
00
|
|
|
#5 |
|
Membre du Club
![]() KONEInscription : juin 2004 Messages : 109 ![]() |
Merci beaucoup CinePhil. Ton explication est très claire et j'ai bien compris.
Excellente journée à toi
__________________
Une somme de savoirs en chaque matière, si minime soit-elle, rend n'importe quel benêt, dans un pays de benêts, docte.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com