Aller au contenu

requete sur deux tables


Lentreprenaute

Sujets conseillés

Bonsoir,

je veux generer un menu, pour cela j'ai deux table j'ai en commun "CategoryID", le but generer un menu par ordre alphabetique "CategoryName", et d'afficher uniquement les categories qui ont pour demoninateur commun la valeur de

"CategoryStyle". j'ai fait une premiere version avec un while qui m'a ete deconseillé sur un autre post. l'occasion pour moi de recreer certains menus. mais quid de la syntaxe.

TB1

select CategoryName,CategoryID FROM Categories ORDER BY CategoryName DESC

TB2

select CategoryStyle,CategoryID FROM TRI_Categories WHERE CategoryStyle=1";

Merci,

Florent

Lien vers le commentaire
Partager sur d’autres sites

Ou là, c'est pas trés clair. Tu veux dire quoi par

et d'afficher uniquement les categories qui ont pour demoninateur commun la valeur de

"CategoryStyle"

Peut tu faire la liste des champs de tes tables ??

A mon avis il y a aussi un problème dans la jointure de tes tables :

j'ai en commun "CategoryID"

Je ne comprends pas trop ça...

Lien vers le commentaire
Partager sur d’autres sites

Posté (modifié)

bah decidement on ne comprend plus sur le hub :)

simple interrogation d'une table 1 avec comme condition, que les categories correspondent a un critere qui est stocké dans une autre table ?

actuellement j'ai fait une requete qui ne me sort tout ce qui correspond à CategoryStyle=1 dans une table puis le while va repiocher dans l'autre table. le CategoryID me sert donc a faire le lien.

tri = "select CategoryStyle,CategoryID FROM TB2_Categories WHERE CategoryStyle=1";

$tri_result = mysql_query($tri,$link) or die ('Erreur : '.mysql_error() );

while($tri_row = mysql_fetch_array($tri_result)) {

$menu = "select CategoryName,CategoryID FROM TB1_Categories WHERE CategoryID=".$tri_row['CategoryID']." ORDER BY CategoryName DESC ";

$menu_result = mysql_query($menu,$link) or die ('Erreur : '.mysql_error() );

while($menu_row = mysql_fetch_array($menu_result)) {

fonction($menu_row['CategoryName']);

}

Modifié par Lentreprenaute
Lien vers le commentaire
Partager sur d’autres sites

Pourquoi tu ne fais pas une jointure ?

select TB1_Categories.CategoryName,TB1_Categories.CategoryID FROM TB1_Categories 
INNER JOIN TB2_Categories ON TB1_Categories.CategoryID= TB2_Categories.CategoryID
WHERE TB2_Categories.CategoryStyle=1
ORDER BY TB1_Categories.CategoryName DESC

Lien vers le commentaire
Partager sur d’autres sites

Avec un INNER JOIN il n'y a pas de différence pratique à ma connaissance.

Mais il est bon de connaitre cette syntaxe car elle est "généraliste" et elle peut te servir pour faire des jointures plus complexes. (OUTER JOIN, CROSS JOIN, etc...)

Lien vers le commentaire
Partager sur d’autres sites

La différence c'est le nom... Jointure et jointure manuel :P.

Les deux fonctionnes mais celle de robinson est mieux à mon sens surtout si tu travail un jour avec d'autre sgbdr que mysql

@ bientôt

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...