|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() Denis ThevenotDéveloppeur & Designer Web Inscription : février 2004 Messages : 124 ![]() |
Bonjour,
J'ai une table 'vehicules' qui comprends un champ 'id' et un champ 'regions'. Le champ 'region' est de type SET avec comme valeurs déterminées les numéros de régions de France ('11','21','22','23','24','25',...). Un véhicule peut appartenir à zéro, une ou plusieurs régions. J'essaie de trouver la requête MYSQL qui va bien pour calculer le nombre de véhicules par régions, pour obtenir un résultat du genre : region = nbr 11 = 2 21 = 15 22 = 7 23 = 0 24 = 5 25 = 0 ... j'ai essayé avec GROUP BY, mais ca ne marche pas Qq'un pourrait-il m'aider a trouver la bonne requête ? Merci
__________________
Olisea : Conseil et Création Internet |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 652 ![]() |
Bonjour,
c'est bien un group by qu'il faut utiliser. Lisez ceci http://sqlpro.developpez.com/cours/sqlaz/ensembles/ et revenez avec votre requête si ca ne marche pas toujours pas. |
|
|
00
|
|
|
#3 | ||
|
Membre habitué
![]() Denis ThevenotDéveloppeur & Designer Web Inscription : février 2004 Messages : 124 ![]() |
Merci pour ce lien
J'ai parcouru toute la page, et j'ai pas l'impression qu'elle aborde mon cas particulier de type SET (ou alors j'ai mal lu...) Je donne un peu plus d'infos : Voici ma table : Code :
Code :
SELECT count(`id`) AS `nbr`, `regions` FROM `vehicules` GROUP BY `regions`
__________________
Olisea : Conseil et Création Internet |
||
|
|
00
|
|
|
#4 | |||||
![]() ![]() |
Ça ne marche pas tout simplement parce que vous avez mal modélisé les données !
La première règle en matière de base de données relationnelle est : 1 colonne => 1 donnée. Là vous avez mis plusieurs régions dans la même colonne, ça ne va pas ! Je reprends votre règle de gestion : Citation:
Citation:
vehicule -0,n----appartenir----0,n- region Les tables qui découlent du MCD : vehicule (veh_id, veh_immatriculation...) region (reg_id, reg_code, reg_nom...) veh_appartenir_reg (var_id_vehicule, var_id_region) 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
|
|
|
#5 |
|
Membre habitué
![]() Denis ThevenotDéveloppeur & Designer Web Inscription : février 2004 Messages : 124 ![]() |
Oui, alors on s'est mal compris
En fait si j'ai plusieurs données dans un même champ (regions), c'est justement pour éviter de créer deux tables supplémentaires (une pour les régions et l'autre pour la relation vehicules-regions). C'est justement pour cela que le champ 'regions' est de type SET. Si à chaque fois qu'on utilise le type SET on nous dit de faire du relationnel, je vois pas à quoi sert ce type S'il existe c'est bien pour une raison... non ?
__________________
Olisea : Conseil et Création Internet |
|
|
00
|
|
|
#6 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 652 ![]() |
Ce type "SET" (désolé d'avoir lu trop vite votre 1er message) n'a rien avoir avec du SQL.
Donc ensuite faut pas s'étonner qu'une simple requête ne marche pas avec des types exotiques de ce genre. Avez-vous dépiotez la doc MySql pour voir si des fonctions existaient pour ce genre de traitement ? En fait, si votre besoin final est d'avoir en affichage J'aurai plutôt tendance à effectuer une modilisation normale de votre base puis d'utiliser une fonction du type group_concat() au sein d'une vue qui produira le même résultat. Comme ca plus de problème de ce type. |
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Denis ThevenotDéveloppeur & Designer Web Inscription : février 2004 Messages : 124 ![]() |
Donc si je comprends bien, le type SET existe bien dans MySQL (uniquement), mais il ne faut pas l'utiliser.
En gros c'est le "goto" du SQL, c'est le mal quoi... Bon, je vais faire autrement, genre une petite boucle en PHP sur chaque région pour calculer le nombres de véhicules via une requête basique, et zou ![]() Merci quand même les amis Je mets résolu même si ça ne l'est pas tout à fait.
__________________
Olisea : Conseil et Création Internet |
|
|
00
|
|
|
#8 | |
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 530 ![]() |
Saluton,
Citation:
Le formes normales encore et toujours.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com