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

Accès aux données Discussion :

Phototheque - Comment gérer des catégories ?


Sujet :

Accès aux données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Phototheque - Comment gérer des catégories ?
    bonjour ,

    Je suis en train de développer une photothèque, et je bloque sur la sélection des photos associées a la sélection des catégories ... Je m'explique:

    L'application possède une hiérarchie de catégorie: chaque catégorie retient l'id de sa catégorie parente.

    Exemple de catégorie:
    Code autre : 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
    17
    18
     
    Familles
         Dupont
              Nicolas
              Damien
              Yves
              Julienne
         Neven
              Yves
              Enriette
    Événements
         Noël
         Anniversaire
         Mariage
    Années
         2010
         2011
         2012

    Chaque photo peut appartenir à plusieurs catégories, et c'est la mon problème.

    Je ne sais pas comment générer une requêtes sql qui me permettrait par exemple de ne prendre que les photos de Noël 2012, ou encore les photos de "l'anniversaire d'Enriette Neven en 2011" .

    Est-ce que quelqu'un a déjà fait ça ? Ou a une idée de comment le faire? Doit-on passer par la génération de requêtes imbriquées?

    Merci d'avance pour tout commentaire

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2009
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 147
    Points : 174
    Points
    174
    Par défaut
    Cela dépends de la manière dont tu relies tes photos aux catégories: leur nombre est -il fixe? Les stockes-tu dans des colonnes différentes de ta base?Dans la même colonne , séparé par un caractère séparateur?
    Pour chaque réponse la requète sera différente.
    cordialement

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par naindjardin Voir le message
    Je ne sais pas comment générer une requêtes sql qui me permettrait par exemple de ne prendre que les photos de Noël 2012, ou encore les photos de "l'anniversaire d'Enriette Neven en 2011" .
    Le fait que les catégories soient organisées de façon hiérarchique n'a pas vraiment d'importance (dans les cas que tu mentionnes du moins)

    Je suppose que tu as une table de ce type dans ta base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PHOTO_CATEGORIE
    ---------------
    ID_PHOTO
    ID_CATEGORIE
    Dans ce cas, pour chaque catégorie à la quelle les photos recherchées doivent appartenir, il faudrait rajouter une condition de ce type :


    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    EXISTS (SELECT 1 FROM PHOTO_CATEGORIE WHERE ID_PHOTO = p.ID AND ID_CATEGORIE = 15)

    (où "p" est l'alias de la table PHOTO dans la requête parente)

    Si tu veux pouvoir sélectionner "les photos de la famille Dupont", c'est un peu plus compliqué... Peu de SGBD supportent nativement les requêtes hiérarchiques (Oracle, peut-être PostgreSQL, les versions récentes de SQL Server mais avec une approche bizarre...). Le plus simple, si tu as déjà tes catégories en mémoire, c'est de déterminer la liste des sous-catégories et d'utiliser une condition "IN" :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    EXISTS (SELECT 1 FROM PHOTO_CATEGORIE WHERE ID_PHOTO = p.ID AND ID_CATEGORIE IN (12, 13, 14, 15))

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci de vos réponses, je dispose effectivement d'une table comme retenant les deux index.

    Disposez-vous de plus d'informations à propos de l'approche hierarchique de SQL SERVER ?

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par naindjardin Voir le message
    Disposez-vous de plus d'informations à propos de l'approche hierarchique de SQL SERVER ?
    Pas vraiment... voilà un article sur le sujet (en anglais)
    http://msdn.microsoft.com/en-us/magazine/cc794278.aspx

    Tu auras peut-être plus d'informations sur le forum SQL Server

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 502
    Points
    1 502
    Par défaut
    Salut,

    Tu n'as pas forcément besoin de faire des requêtes hiérarchiques, un petit alter table et une arbo bien placée peuvent le faire:

    ta table catégorie ressemble sans doute à cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    id  libelle     id_parent
    1  famille     null
    2  mere       1
    3  frere       1
    4  taff         null
    5  patron     4
    6  demifrere  3
    ajoutes-lui une colonne reprenant tous les parentes concaténé et séparés par des underscore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    id  libelle     id_parent   parents
    1  famille     null          null
    2  mere       1             1
    3  frere       1             1
    4  taff         null          null
    5  patron     4             4
    6  demifrere  3            4_3
    Du coups avec une seule requête tu va pouvoir retourner toutes les catégories d'une catégorie parent, sans te compliquer la vie (bon ok il reste l'alimentation à modifier).

Discussions similaires

  1. Photothèque - comment gérer des catégories ?
    Par naindjardin dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/01/2011, 13h51
  2. Réponses: 2
    Dernier message: 10/10/2006, 12h38
  3. [5.5.17] Comment gérer des autorisations
    Par elitost dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 12/09/2006, 20h20
  4. Comment gérer des services par programmation avec Delphi ?
    Par isachat666 dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 18/12/2005, 18h54
  5. [Firebird] Comment gérer des groupes d'utilisateur
    Par stundman dans le forum Administration
    Réponses: 3
    Dernier message: 16/11/2005, 13h30

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