Catégories pour une phototheque

cs_naindjardin Messages postés 12 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 14 janvier 2011 - 14 janv. 2011 à 10:29
SQLPande Messages postés 5 Date d'inscription mercredi 17 mars 2010 Statut Membre Dernière intervention 9 février 2011 - 9 févr. 2011 à 08:03
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:
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

1 réponse

SQLPande Messages postés 5 Date d'inscription mercredi 17 mars 2010 Statut Membre Dernière intervention 9 février 2011
9 févr. 2011 à 08:03
A quoi ressemble tes tables?
celle des categories ,celle des photos et la porteuse entre les deux?

sinon par exemple:

Soit la table categories:
CREATE TABLE [dbo].[Categories](
[CatId] [int] IDENTITY(1,1) NOT NULL,
[CatLibelle] [nvarchar](100) NULL,
 CONSTRAINT [PK_Categories] PRIMARY KEY CLUSTERED 
(
[CatId] ASC
)WITH (PAD_INDEX  OFF, STATISTICS_NORECOMPUTE  OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

la table Images:


CREATE TABLE [dbo].[Images](
[imgId] [int] IDENTITY(1,1) NOT NULL,
[imgPath] [nvarchar](1000) NULL,
 CONSTRAINT [PK_Images] PRIMARY KEY CLUSTERED 
(
[imgId] ASC
)WITH (PAD_INDEX  OFF, STATISTICS_NORECOMPUTE  OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]



et la porteuse:
CREATE TABLE [dbo].[CategoriesImages](
[catImgCatId] [int] NULL,
[catImgImgId] [int] NULL
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[CategoriesImages]  WITH CHECK ADD  CONSTRAINT [FK_CategoriesImages_Categories] FOREIGN KEY([catImgCatId])
REFERENCES [dbo].[Categories] ([CatId])
GO

ALTER TABLE [dbo].[CategoriesImages] CHECK CONSTRAINT [FK_CategoriesImages_Categories]
GO

ALTER TABLE [dbo].[CategoriesImages]  WITH CHECK ADD  CONSTRAINT [FK_CategoriesImages_Images] FOREIGN KEY([catImgImgId])
REFERENCES [dbo].[Images] ([imgId])
GOALTER TABLE [dbo].[CategoriesImages] CHECK CONSTRAINT [FK_CategoriesImages_Images]
GO



Le script te permettant de faire ce que tu veux est le suivant:

declare @CatId int

set @CatId=1--Id de ta categorie selectionnée

/**/

select I.imgId, I.imgPath 
from dbo.Images I
INNER JOIN CategoriesImages CI ON CI.catImgImgId=I.imgId
where CI.catImgCatId=@CatId



J'espere que ca t'auras aidé .
0
Rejoignez-nous