|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre éprouvé
![]() Christophe CharronDéveloppeur informatique Inscription : juillet 2005 Messages : 768 ![]() |
Bonjour,
soit une table categories Code :
Code :
35->1+2+32 (SS1 & SS2 & SS6) 64->64 (SS7) 31-> 1+2+4+8+16 (SS1 & SS2 & SS3 & SS4 & SS5) etc Est-il possible de formuler dans une requête -1 Que l'on veut récupérer toutes les catégories liées à la sous-catégorie "SS2" (etbinaire 2) (select * from categorie where cat_souscat ???) -2 Que l'on veut afficher, pour chaque catégorie toutes les sous catégories (select cat_cle,cat_des,sc_des ?? from ??? where cat_cle=1) renverrai 1,Categorie 1, SS1 1,Categorie 1, SS2 1,Categorie 1, SS6 ??? -- Cordialement, Christophe Charron |
||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() Inscription : avril 2004 Messages : 734 ![]() |
Bonjour,
Oui, cela doit être possible avec ce type de condition : |
|
|
00
|
|
|
#3 |
|
Provisoirement toléré
Inscription : juin 2003 Messages : 2 622 ![]() |
Heu, c'est quoi cette modélisation ?
Tu as pensé aux pauvres confrères qui vont devoir maintenir ta base ?
__________________
Pensez au bouton
|
|
|
00
|
|
|
#4 | |||
|
Membre éprouvé
![]() Christophe CharronDéveloppeur informatique Inscription : juillet 2005 Messages : 768 ![]() |
Citation:
Si en plus l'informatique devait devenir accessible à tout le monde, comment pourrions nous justifier des émoluements galactiques qui nous sont dûs ? ... Et puis dans un espace relativement fini, un bigint nous permet de monter assez loin, ça me semble plus souple que d'avoir une table de relations mais c'est un point de vue et ce n'est que le mien mais faut-il encore pouvoir l'appliquer souplement ... Je le fais déjà mais pas en SQL, dans du code Code :
|
|||
|
|
00
|
|
|
#5 | |
|
Membre éprouvé
![]() Christophe CharronDéveloppeur informatique Inscription : juillet 2005 Messages : 768 ![]() |
Citation:
|
|
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : février 2006 Messages : 118 ![]() |
Je ne pense pas que ton modèle soit très pratique à utiliser. Je ne sais pas si tu as déjà fait des conversions décimales --> binaires mais je crois que la solution passera par ça.
Si tu prends le nombre 117 par exemple et que tu le convertis en binaires tu obtiens la valeur 1110101 ce qui signifie donc que: 117 = (1 * 2^0) + (0 * 2 ^ 1) + (1 * 2 ^ 2) + (0 * 2 ^ 3) + (1 * 2 ^ 4) + (1 * 2 ^ 5) + (1 * 2 ^ 6) Je pense que pour une cacégorie avec une cat_souscat de 31 c'est le même principe, tu convertis ton nombre en binaire et où il y a des 1 c'est qu'il y a une catégorie au-dessus. Pour la trouver il faut élever la puissance. Dans l'exemple du 117 il y aurait donc 5 catégories (c'est le nombre de 1 de la valeur binaire) et elles auraient la valeur 1, 4, 16, 32, 64. Mettre ça dans une requête ça me semble un peu compliqué, y'a certainement un système plus simple à l'aide de PK et FK. |
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Inscription : février 2006 Messages : 118 ![]() |
Voici une petite suggestion qui j'espère pourra convenir à ton cas:
Je pense que tu devrais créer une classe "categorie", une classe "sousscat" et une classe "appartenir" (classe association). La classe categorie contiendrait une PK (id) et une désignation (designation). La classe souscat contiendrait également une PK (id) et une désignation (designation). La classe appartenir contiendrait 2 FK: id_categorie et id_souscat. Toutes les Pks seraient de simple valeur auto-incrémentée (1,2,3,4,5,...) Si une sous-catégorie SS6 (disons que l'id=4)appartient à 3 catégories (cat1 id=2, cat2 id=5, cat3 id=11) alors tu aurais 3 lignes dans la classe "appartenir" avec les valeurs suivantes: 4 2 4 5 4 11 Si tu cherches toutes les sous-catégories qui appartiennent à SS6 tu ferais donc une requête du type Code :
SELECT id_souscat FROM appartenir WHERE id_categorie = 4 Code :
SELECT a.id_souscat, s.designation FROM appartenir a, souscat s WHERE a.id_categorie = 4 AND a.id_souscat = s.id Ce serait plus simple de connaitre le contexte pour être sûr de moi. Je pense que pour gérer des catégories une seule table doit suffir, avec une FK sur elle-même. Bonne chance |
|
|
00
|
|
|
#8 | |
|
Membre éprouvé
![]() Christophe CharronDéveloppeur informatique Inscription : juillet 2005 Messages : 768 ![]() |
Citation:
Ou puis-je trouver de la doc et tutos sur les classes en Mysql |
|
|
|
00
|
|
|
#9 |
|
Membre habitué
![]() Inscription : février 2006 Messages : 118 ![]() |
Une classe c'est une table en fait... enfin à peu près. Petit tentative d'explication:
En modélisation, on construit d'abord un modèle conceptuel, puis un modèle logique et finalement un modèle physique. Le modèle conceptuel est composé de classes, ces classes comportent des attributs. Chaque classe a également des liens avec d'autres classes et des cardinalités. Les cardinalités indiquent par exemple si un employé peut avoir 1 fonction (cardinalité 1) ou plusieurs (cardinalité *). Lorsque ce modèle est terminé (c'est la phase la plus longue), on le transforme d'une manière "automatique" (pas besoin de réflexion, un programme peut le faire) en en modèle logique. Dans le modèle logique les "classes" sont devenues des "tables". Tout cette partie peut se faire sur papier et est facultative. Mais pour des choses complexes c'est nécessaire. Vient ensuite le modèle physique qui consiste à adapter le modèle logique à la base de données que tu utilises. -------------------- Bref si je ne me trompe pas, tu veux pouvoir créer des catégories et connaître quelles sont leurs sous-catégories (s'il y en a). Il faudrait encore savoir si une catégorie n'a qu'un seul parent direct ou non. Est-ce que par exemple "sous-catérogie1" peut être directement lié à catégorie2 ET catégorie3 ? Ou est-ce que, comme dans un système de fichier, sous-categorie1 est un enfant de categorie3 qui lui-même est enfant de categorie2 ? |
|
|
00
|
|
|
#10 | |
|
Membre éprouvé
![]() Christophe CharronDéveloppeur informatique Inscription : juillet 2005 Messages : 768 ![]() |
Citation:
et pardon pour le test tardif : non seulement c'est possible, mais en plus ça marche Mais je suis très preneur de liens vers des docs expliquant cela (parce qui sait il y a peut-être d'autres fonctions magiques ... ) Merci encore
__________________
Cordialement, Christophe Charron Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com