Recuperation des produits d'une sous categorie & toute les sous categorie liée

Petit nouveau ! | 7 Messages

31 oct. 2008, 14:30

salut bon alors voila :

j'ai une table categories

Code : Tout sélectionner

categories_id categories_name categories_parent_id
et une table produits

Code : Tout sélectionner

products_id products_categories (= categories_id) products_name
les categories son comme des repertoires et les produits son comme des fichiers.

on imagine une hierarchie comme ceci

Code : Tout sélectionner

-> [b]Voiture[/b] -->[b]Renault[/b] -----> [b]Coupé[/b]- ------------>Produit ------------->Produit ------------->Produit ------------->Produit -----> [b]Break[/b] ------------->Produit ------------->Produit ------------->Produit ------------->Produit -----> [b]Berline[/b] ------------->Produit ------------->Produit ------------->Produit ------------->Produit -->[b]Opel[/b] -----> [b]Coupé[/b]- ------------>Produit ------------->Produit ------------->Produit ------------->Produit -----> [b]Break[/b] ------------->Produit ------------->Produit ------------->Produit ------------->Produit -----> [b]Berline[/b] ------------->Produit ------------->Produit ------------->Produit ------------->Produit -->[b]BMW[/b] -----> [b]Coupé[/b]- ------------>Produit ------------->Produit ------------->Produit ------------->Produit -----> [b]Break[/b] ------------->Produit ------------->Produit ------------->Produit ------------->Produit -----> [b]Berline[/b] ------------->Produit ------------->Produit ------------->Produit ------------->Produit
bon alors j'arrive a affiché par exemple les produits de la categorie "berline" de chez "Renault".
avec un where products_categories ='1'

moi maintenant j'aimerai faire une requete qui quand je lui indique la categorie BMW il me sorte tout les produits qu'il y a dans les sous-categorie (voir sous-sous-categorie etc, genre recurcive)
en mysql si possible

j'espere que je suis claire :)

mici beaucoup
Modifié en dernier par ciboulette15000 le 31 oct. 2008, 21:01, modifié 1 fois.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

31 oct. 2008, 15:15

Tu peux faire une jointure simple.

:arrow: http://sqlpro.developpez.com/cours/sqlaz/jointures/

Petit nouveau ! | 7 Messages

31 oct. 2008, 21:11

je comprend pas comment ça marche , jusqu'a l'etape II je compend encore mais apres je patauge totalement dans la semoule , tu aurai pas un exemple avec ma base que je puisse juste comprendre le principe? :oops:
et faire des tests chez moi

Avatar du membre
ViPHP
ViPHP | 3008 Messages

31 oct. 2008, 22:08

C'est à partir de l'exemple 3 que tu commences vraiment les jointures.

Voici les exemples que tu dois étudier :
SELECT CLI_NOM, TEL_NUMERO
FROM T_CLIENT, T_TELEPHONE
WHERE T_CLIENT.CLI_ID = T_TELEPHONE.CLI_ID
Traduction : SELECTION de CLI_NOM et TEL_NUMERO des tables T_CLIENT et T_TELEPHONE OU CLI_ID de T_CLIENT est égal à CLI_ID de T_TELEPHONE.

Tu comprends mieux ?

Puis la requête
SELECT CLI_NOM, TEL_NUMERO
FROM T_CLIENT C, T_TELEPHONE T
WHERE C.CLI_ID = T.CLI_ID
qui est identique sauf qu'on utilise la technique du "surnommage" : attribution d'un surnom à chacune des tables présente dans la partie FROM du SELECT, ici C et T.

La table T_CLIENT
create table T_CLIENT
(
    CLI_ID               INTEGER               not null,
    TIT_CODE             CHAR(8)                       ,
    CLI_NOM              CHAR(32)              not null,
    CLI_PRENOM           VARCHAR(25)                   ,
    CLI_ENSEIGNE         VARCHAR(100)                  ,
    primary key (CLI_ID)
);
et la table T_TELEPHONE
create table T_TELEPHONE
(
    TEL_ID               INTEGER               not null,
    CLI_ID               INTEGER               not null,
    TYP_CODE             CHAR(8)               not null,
    TEL_NUMERO           CHAR(20)              not null,
    TEL_LOCALISATION     VARCHAR(64)                   ,
    primary key (TEL_ID)
);

Petit nouveau ! | 7 Messages

01 nov. 2008, 14:13

oui ça j'ai compris comment faire.
moi se que je voudrai c'est une requete qui me donne tout les produits qui son dans la categorie Renault par exemple
sachant que aucun produit n'est liée a renault directement mais a une sous categorie (berline , break etc).

on gros ça donnerai comme reflexion :

La categorie "renault" (ex : categories_id = 2) est choisi
j'ajoute tout les produits au resultat requete si il y a des sous categorie qui son liée a renault (berline , etc) via le champs categories_parent_id , hop je le selectionne et je recupere le resultat dans la requete etc etc et ça s'arrete quand il n'y a plus de sous categories.

dans mon exemple ça donnerai pour renault 12 produits