SQL recherche sur plusieurs tables
Anselme
-
anselme -
anselme -
Bonsoir à tous,
Avant de commencer ce message brut d'informaticien, je voudrais souhaiter à tout les
lecteurs potentiels un Joyeux Noel. Moi je le fete à Budapest cette année.
Bon maintenant venons en au fait:
Je suis en train de coder un site en PHP lié du sql via MYSQL.
Mon problème est le suivant.
J'ai des produits. Ces produit sont définis dans la table produit avec pour faire simple leur
nom et leur id.
A ces objets sont assignés des caractéristiques. Comme j'ai beaucoup de caracterisitiques
et queje veux pouvori en rajouter quand bon me semble , j'ai crée donc deux tables
supplémenataires.
La premiere table nommons la caracteristique serre à mettre les noms de caracteristiques et
certaines propriétés par rapport à ces derniere (comme par exemple je veux que cette
caracteerisitque soit un textarea ou un select etc..)
Maintenant chaque produit peut avoir des caracteristiques differentes.
Pour exemple j'ai un velo (table produit) ce velo a des roues et des freins (tables
caracteristiques) mais pour j'ai un autre velo mais avec des roues et des freins de marques
differentes.
Pour me simplifier la tete j'ai crée une troisièeme table qui sert de rentrer les values des
caractéristiques du produit .
Me suivez -vous ?
Petit recapitulatif en schematisant.
Je rentre un produit dans ma base un vélo .
Ce vélo je le rentre dans ma table produit.
Ce velo a des caracterisitques .
Je liste les caracteristiques que doit avoir un vélo à partir de ma table caracteristiques.
Je rentre les values de mes caracteristiques qui seront insérée dans la table
value_caractéristiques
Ma table value_caractéristiques à donc comme champ
id (jusqu'a la pas trop difficile)
id du produit
id de la cara
value
Tout roulait comme je voulais sur mon site web pour lister mes objets leurs differents carac
et leurs differents valeurs de cara, jusqu'au jour (aujourd'hui) ou je décide d'installerun
moteur de recherche pour permettre à l'utlisateur de choisir en fonction des
caracterisitques disponible la valeur des caractèristiques.
Et la c'est le drame.
C'est à ce moment la que vous intervenez si ca vous dit. (Ca m'aiderait beaucoup ceci dit :) )
Donc le moteur de recherche à plusieurs text area pour plusieurs caracteristiques
disponibles.
Je pensais donc à une réquete du genre
SELECT DISTINCT (p.produitid) FROM poduit AS p INNER JOIN value_caractéristiques AS c
WHERE p.produitid = c.produitid AND c.caracteristiques='46' AND c.value=''définie par
l'utilsateur"
Celle ci marche , le probleme c'est que ici un champ seulement peut etre satisfait.
Lorsque l'utilsateur veut un deuxieme critère ma requete donnerait
SELECT DISTINCT (p.produitid) FROM poduit AS p INNER JOIN value_caractéristiques AS c
WHERE p.produitid = c.produitid AND c.caracteristiques='46' AND c.value=''définie par
l'utilsateur" c.caracteristiques='47' AND c.value=''encore définie par l'utilsateur"
et la ca marche plus du tout car c'est on revient sur l'entrée.
J'espere que vous aurez compris mon casse tete qui peut etre pour vous ne sera pas du tout
un casse tete.
Dans l'attente de vos réponse, je vous souhaite une bonne nuit ou un bon debut de
journée,*
Bien à vous,
Anselme.
PS: Si mes explications sont plus que confuses n'hesitez pas à me faire detailler encore. :)
Avant de commencer ce message brut d'informaticien, je voudrais souhaiter à tout les
lecteurs potentiels un Joyeux Noel. Moi je le fete à Budapest cette année.
Bon maintenant venons en au fait:
Je suis en train de coder un site en PHP lié du sql via MYSQL.
Mon problème est le suivant.
J'ai des produits. Ces produit sont définis dans la table produit avec pour faire simple leur
nom et leur id.
A ces objets sont assignés des caractéristiques. Comme j'ai beaucoup de caracterisitiques
et queje veux pouvori en rajouter quand bon me semble , j'ai crée donc deux tables
supplémenataires.
La premiere table nommons la caracteristique serre à mettre les noms de caracteristiques et
certaines propriétés par rapport à ces derniere (comme par exemple je veux que cette
caracteerisitque soit un textarea ou un select etc..)
Maintenant chaque produit peut avoir des caracteristiques differentes.
Pour exemple j'ai un velo (table produit) ce velo a des roues et des freins (tables
caracteristiques) mais pour j'ai un autre velo mais avec des roues et des freins de marques
differentes.
Pour me simplifier la tete j'ai crée une troisièeme table qui sert de rentrer les values des
caractéristiques du produit .
Me suivez -vous ?
Petit recapitulatif en schematisant.
Je rentre un produit dans ma base un vélo .
Ce vélo je le rentre dans ma table produit.
Ce velo a des caracterisitques .
Je liste les caracteristiques que doit avoir un vélo à partir de ma table caracteristiques.
Je rentre les values de mes caracteristiques qui seront insérée dans la table
value_caractéristiques
Ma table value_caractéristiques à donc comme champ
id (jusqu'a la pas trop difficile)
id du produit
id de la cara
value
Tout roulait comme je voulais sur mon site web pour lister mes objets leurs differents carac
et leurs differents valeurs de cara, jusqu'au jour (aujourd'hui) ou je décide d'installerun
moteur de recherche pour permettre à l'utlisateur de choisir en fonction des
caracterisitques disponible la valeur des caractèristiques.
Et la c'est le drame.
C'est à ce moment la que vous intervenez si ca vous dit. (Ca m'aiderait beaucoup ceci dit :) )
Donc le moteur de recherche à plusieurs text area pour plusieurs caracteristiques
disponibles.
Je pensais donc à une réquete du genre
SELECT DISTINCT (p.produitid) FROM poduit AS p INNER JOIN value_caractéristiques AS c
WHERE p.produitid = c.produitid AND c.caracteristiques='46' AND c.value=''définie par
l'utilsateur"
Celle ci marche , le probleme c'est que ici un champ seulement peut etre satisfait.
Lorsque l'utilsateur veut un deuxieme critère ma requete donnerait
SELECT DISTINCT (p.produitid) FROM poduit AS p INNER JOIN value_caractéristiques AS c
WHERE p.produitid = c.produitid AND c.caracteristiques='46' AND c.value=''définie par
l'utilsateur" c.caracteristiques='47' AND c.value=''encore définie par l'utilsateur"
et la ca marche plus du tout car c'est on revient sur l'entrée.
J'espere que vous aurez compris mon casse tete qui peut etre pour vous ne sera pas du tout
un casse tete.
Dans l'attente de vos réponse, je vous souhaite une bonne nuit ou un bon debut de
journée,*
Bien à vous,
Anselme.
PS: Si mes explications sont plus que confuses n'hesitez pas à me faire detailler encore. :)
A voir également:
- SQL recherche sur plusieurs tables
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Tables des matières word - Guide
- Rechercher ou entrer l'adresse mm - recherche google - Guide
- Recherche image - Guide
- Je recherche une chanson - Guide
3 réponses
bonjour,
je ne vois pas pourquoi tu entre des caracteristiques ( je suppose que tu exploite avec une base de donnée ) pourquoi faire plusieurs tables alor que les caracteristiques tu peus les entré dans une seul tables ? tu n'a pas de limite de champ dans une base de donnée,apres pour faire ta requete tu peu le faire dans plusieurs balise Php ,me comprend tu ?
<?php
ta premiere selection
>?
<?php
ta deuxieme selection
>?
<?php
tatroisieme selection
>?
enfin je sais pas,c'est idée ...
je ne vois pas pourquoi tu entre des caracteristiques ( je suppose que tu exploite avec une base de donnée ) pourquoi faire plusieurs tables alor que les caracteristiques tu peus les entré dans une seul tables ? tu n'a pas de limite de champ dans une base de donnée,apres pour faire ta requete tu peu le faire dans plusieurs balise Php ,me comprend tu ?
<?php
ta premiere selection
>?
<?php
ta deuxieme selection
>?
<?php
tatroisieme selection
>?
enfin je sais pas,c'est idée ...
Salut,
merci pour ta réponse, c'est tres gentil de t'etre penché sur mon problème.
En fait ,oui bien sur j'exploite une base de données.
EN fait je n'ai pas mis les caracteristiques dans les meme tables , car je veux pouvoir rajouter des caracterisitques quand bon me semble.
Chaque produit peut avoir des caracteristiques différentes et la valeur des caracteristiques egalement differente.
Exemple: Je vends un vélo qui a des freins de type Mx et un packaging en carton, mais egalement un ours en peluche qui est en laine , et qui a un packagin en carton.
Je veux que l'utilisateur qui cherche tout ce qui a un packaging en carton tombe sur les deux .
Le prob de mettrre tout les caracterisitques dans la meme table , c'st que a chaque fois que je veux que je veux en tant qu'administrateur rajouter une nouvelle caracterisiques je dosi modifier mon code et ma table.
...
Merci en totu cas,
Anselme
merci pour ta réponse, c'est tres gentil de t'etre penché sur mon problème.
En fait ,oui bien sur j'exploite une base de données.
EN fait je n'ai pas mis les caracteristiques dans les meme tables , car je veux pouvoir rajouter des caracterisitques quand bon me semble.
Chaque produit peut avoir des caracteristiques différentes et la valeur des caracteristiques egalement differente.
Exemple: Je vends un vélo qui a des freins de type Mx et un packaging en carton, mais egalement un ours en peluche qui est en laine , et qui a un packagin en carton.
Je veux que l'utilisateur qui cherche tout ce qui a un packaging en carton tombe sur les deux .
Le prob de mettrre tout les caracterisitques dans la meme table , c'st que a chaque fois que je veux que je veux en tant qu'administrateur rajouter une nouvelle caracterisiques je dosi modifier mon code et ma table.
...
Merci en totu cas,
Anselme