Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1193 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Fonction recherche complexe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] Fonction recherche complexe

n°1398028
energiez
Posté le 30-06-2006 à 14:10:22  profilanswer
 

Bonjour à tous, et d'avance, merci pour votre aide.
 
Je suis actuellement entrain de développer un module de recherche (pour trouver des magasins) qui prend 3 paramétres en arguments : Nom, ville et catégories.
 
La structure de ma base et tel :
 
   T_magasin
-----------------
PK| id
   | nom
   | ville
 
 
   T_categories
-----------------
PK | id
    | nom
 
   T_categories_magasin
---------------------------
FK | categorie
FK | magasin
 
J'ai actuellement, cette requete SQL (avec un peu de php) qui fonctionne.

Code :
  1. "SELECT T_magasin.nom as magnom,T_magasin.id as magid, T_categories.nom as catnom, T_categories.id as catid
  2.                   FROM T_magasin, T_categories, T_categories_magasin
  3.                   WHERE (T_magasin.nom LIKE '%".$nom."%'
  4.                         AND T_magasin.ville LIKE '%".$ville."%'
  5.                         AND T_categories_magasin.categorie=".$categorie."
  6.                         AND T_magasin.id=T_categories_magasin.magasin
  7.                         AND T_categories.id=T_categories_magasin.categorie)
  8.                   ORDER BY T_categories.nom,T_magasin.nom"


 
Celle ci fonctionne mais, si je selectionne une catégorie "principal" tous les magasins des sous menu n'apparaissent pas :( Ca fait un moment que je planche la dessus, et je trouve pas de solutions :(
 
Les catégories sont construites de cette maniéres :
 
Cat1
--Souscat1.1
--Souscat1.2
Cat2
--Souscat2.1
--Souscat2.2
--Souscat2.3
 
ect...
 
Donc si quelqu'un avait une brillante idée pour que les magasins des souscatégories s'affiche lorsque je séléctionne la catégorie principal, je suis preneur !
 
Encore merci a ceu qui m'aideront.

Message cité 1 fois
Message édité par energiez le 30-06-2006 à 14:14:21
mood
Publicité
Posté le 30-06-2006 à 14:10:22  profilanswer
 

n°1398299
Sve@r
Posté le 30-06-2006 à 19:12:20  profilanswer
 

energiez a écrit :

Donc si quelqu'un avait une brillante idée pour que les magasins des souscatégories s'affiche lorsque je séléctionne la catégorie principal, je suis preneur !


 
Te faut rajouter une table "sous-catégorie" reliée à la table "catégories"
Ensuite, tu modifies la table de liaison "categories_magasin" pour lier un magasin à une "sous_categories" plutôt qu'une "catégorie"
 
   T_magasin  
-----------------  
PK| id  
   | nom  
   | ville  
 
 
   T_categories  
-----------------  
PK | id  
    | nom  
 
   T_souscategories  
-----------------  
PK | id  
    | nom  
FK | categorie
 
   T_categories_magasin  
---------------------------  
FK | souscategorie  
FK | magasin  
 
Ensuite, pour chaque catégorie demandée, tu sors toutes les sous-catégories correspondantes puis chaque magasin relié, style :
SELECT T_magasin.nom from
    T_magasin,
    T_categories_magasin,
    T_categories,
    T_souscategories
    where
          T_categories.nom="truc" and
          T_categories.id = T_souscategories.categorie and
          T_souscategorie.id = T_categories_magasin.souscategorie and
          T_souscategorie.magasin = T_magasin.id


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1398392
energiez
Posté le 30-06-2006 à 23:43:36  profilanswer
 

ba mes sous catégorie "boucle" sur elle même, du coup pas besoin d'une autre tabel ;)
 
A je me rend compte que j'ai oublié un champ dans la table catégorie :
 
  T_categorie
-------------
PK | id
FK | parent     (clef étrangére sur l'id de catégorie)
    | nom

n°1398470
Sve@r
Posté le 01-07-2006 à 11:43:27  profilanswer
 

energiez a écrit :

ba mes sous catégorie "boucle" sur elle même, du coup pas besoin d'une autre tabel ;)
 
A je me rend compte que j'ai oublié un champ dans la table catégorie :
 
  T_categorie
-------------
PK | id
FK | parent     (clef étrangére sur l'id de catégorie)
    | nom


 
Ah oui, en fait une catégorie peut très bien être sous-catégorie d'une autre, c'est bien ça ???
Si c'est ça, cela veut dire aussi qu'une sous-catégorie peut elle-aussi avoir d'autres sous-sous catégories et ce, à l'infini...
 
Bon, déjà la requête ci-dessous "devrait" fonctionner pour un niveau de sous-catégories...
SELECT T_magasin.nom from  
    T_magasin,  
    T_categories_magasin,  
    T_categories as cat,  
    T_categories as scat
    where  
          T_categories.nom="truc" and  
          cat.id = scat.parent and  
          scat.id = T_categories_magasin.categorie and  
          T_categorie_magasin.magasin = T_magasin.id;


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Fonction recherche complexe

 

Sujets relatifs
Recherche opérationnel - Placement au guichetRecherche Tuto, cours macro excel
Probleme Mysql[PHP / MySQL] Moteur de recherche
Accents/Points d'interrogation en PHP/MySqlConnexion à MySQL
base de données MYSQL avec champs verticauxMySQL - sélectionner le premier enregistrement d'une table
version client mysql utilisé par PHP 
Plus de sujets relatifs à : [MySQL] Fonction recherche complexe


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR