Version complète: sur le forum Webmaster Hub : requete sur deux tables
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > SQL
Lentreprenaute
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
Compte supprimé
Ou là, c'est pas trés clair. Tu veux dire quoi par
CITATION
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 :
CITATION
j'ai en commun "CategoryID"

Je ne comprends pas trop ça...
Lentreprenaute
bah decidement on ne comprend plus sur le hub smile.gif


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']);
}
Compte supprimé
CODE
SELECT t1.CategoryName, t2.CategoryStyle
FROM Categories t1, TRI_Categories t2
WHERE t1.CategoryID=t2.CategoryID AND t2.CategoryStyle=1
ORDER BY CategoryName DESC
r_question6161.gif
robinsonvendredi
Pourquoi tu ne fais pas une jointure ?
CODE
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
Lentreprenaute
merci a tous les deux,

Robinson, c'est exactement ce que je cherchais a faire ! merci cela fonctionne à merveille. Quel difference entre la syntaxe de Joroen?



Florent
robinsonvendredi
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...)
DuR0
La différence c'est le nom... Jointure et jointure manuel tongue.gif.

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
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.