2010-06-29 3 views
1

Je suis actuellement ce SQLMYSQL obtenir d'autres données de la table dans une jointure

SELECT jm_recipe.name, jm_recipe.slug 
FROM jm_recipe 
LEFT JOIN jm_category_recipe ON jm_category_recipe.recipe_id = jm_recipe.id 
WHERE jm_category_recipe.category_id = $cat" 

Cela renvoie les résultats souhaités, sauf que je dois aussi retourner le nom de la catégorie que la recette que je cherche est en , pour ce faire, j'ai essayé d'ajouter le champ à ma déclaration SELECT et également ajouter la table dans la clause FROM,

SELECT jm_recipe.name, jm_recipe.slug, jm_category_name 
FROM jm_recipe, jm_category 
LEFT JOIN jm_category_recipe ON jm_category_recipe.recipe_id = jm_recipe.id 
WHERE jm_category_recipe.category_id = $cat" 

Cependant cela renvoie simplement aucun résultat, ce que je fais mal?

Répondre

3

Vous devez joindre les deux tables:

SELECT jm_recipe.name, jm_recipe.slug, jm.category_name 
FROM jm_recipe 
    INNER JOIN jm_category_recipe ON jm_category_recipe.recipe_id = jm_recipe.id 
    INNER JOIN jm_category ON jm_recipe.recipe_id = jm_category.recipe_id 
WHERE jm_category_recipe.category_id = $cat 

J'ai changé le joint à jointures ainsi. Vous pourriez vouloir faire les deux jointures GAUCHE si vous avez des valeurs nulles et les voulez dans le résultat.

En outre, vous êtes vulnérable à SQL Injection en copiant simplement $cat.

est ici some PHP specific info for you(je suppose que vous utilisez PHP.)

Questions connexes