IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

etbinaire oubinaire dans conditions ...


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut etbinaire oubinaire dans conditions ...
    Bonjour,
    soit une table categories
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Avec cat_cle(cleunik),cat_des(texte désignation),cat_souscat(bigint sous-catégories)
    alimentée :
    1,"Catégorie 1",35
    2,"Catégorie 2",64
    3,"Catégorie 3",31
    et une table sous_categorie avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Avec sc_cle(cleunik bigint),sc_des(texte désignation)
    Alimentée :
       1,"SS  1"
       2,"SS  2"
       4,"SS  3"
       8,"SS  4"
      16,"SS  5"
      32,"SS  6"
      64,"SS  7"
     128,"SS  8"
     256,"SS  9"
     512,"SS 10"
    1024,"SS 11"
    2048,"SS 12"
    etc
    Si la zone cat_souscat de la table catégories =
    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

  2. #2
    Membre Expert
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Par défaut
    Bonjour,

    Oui, cela doit être possible avec ce type de condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (sc_cle & cat_souscat) != 0

  3. #3
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut
    Citation Envoyé par Adjanakis
    Bonjour,

    Oui, cela doit être possible avec ce type de condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (sc_cle & cat_souscat) != 0
    Bonjour,
    et pardon pour le test tardif : non seulement c'est possible, mais en plus ça marche (v 4.1.12 ) !!!
    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

  4. #4
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Heu, c'est quoi cette modélisation ?

    Tu as pensé aux pauvres confrères qui vont devoir maintenir ta base ?

  5. #5
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut
    Citation Envoyé par Maximilian
    Heu, c'est quoi cette modélisation ?

    Tu as pensé aux pauvres confrères qui vont devoir maintenir ta base ?
    Tu vas pas me dire que ça fait peur à un geek comme toi ?

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SI ETBinaire(vl_e_val_Binaire, 1) <> 0	ALORS vl_c_chaine+="Catin"
    	SI ETBinaire(vl_e_val_Binaire, 2) <> 0	ALORS vl_c_chaine+=" Cattou"
    	SI ETBinaire(vl_e_val_Binaire, 4) <> 0	ALORS vl_c_chaine+=" Catcat"
    	SI ETBinaire(vl_e_val_Binaire, 8) <> 0	ALORS vl_c_chaine+=" Caribou"
    Pourtant pas compliqué non ?

  6. #6
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut
    Citation Envoyé par Adjanakis
    Bonjour,

    Oui, cela doit être possible avec ce type de condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (sc_cle & cat_souscat) != 0
    Vivi ... mais encore ??

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 124
    Par défaut
    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.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 124
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id_souscat FROM appartenir WHERE id_categorie = 4
    Une petite jointure et tu aurais aussi le nom des sous-catégories:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT a.id_souscat, s.designation FROM appartenir a, souscat s WHERE a.id_categorie = 4 AND a.id_souscat = s.id
    Je ne garantis pas l'exactitude de mes requêtes mais c'est à peu près ça.

    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

  9. #9
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut
    Citation Envoyé par yizashi
    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).
    Bonne chance
    Déjà que je maitrîse à peine le select * dans mysql mais alors les classes ... !!
    Ou puis-je trouver de la doc et tutos sur les classes en Mysql

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2006
    Messages : 124
    Par défaut
    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 ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Expressions regulieres dans condition
    Par Matmal11 dans le forum Linux
    Réponses: 4
    Dernier message: 23/02/2007, 14h05
  2. [Smarty] Méthode paramétré dans condition if
    Par Ouark dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 12/12/2006, 08h43
  3. [Système] Problème de syntaxe dans condition
    Par pierrot10 dans le forum Langage
    Réponses: 10
    Dernier message: 09/10/2006, 14h10
  4. Erreur dans conditions SQL*Loader
    Par mike_made dans le forum SQL
    Réponses: 5
    Dernier message: 05/05/2006, 16h19
  5. signe > dans condition if
    Par ibtisss dans le forum Langage
    Réponses: 2
    Dernier message: 23/01/2006, 15h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo