MYSQL получить другие данные таблицы в объединении - PullRequest
1 голос
/ 29 июня 2010

Я сейчас использую этот SQL

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"

Это возвращает желаемые результаты, за исключением того, что мне также нужно вернуть название категории, в которой находится искомый рецепт, для этого я попытался добавить поле в свой оператор SELECT, а также добавить таблица в предложении 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"

Однако это просто не дает результатов, что я делаю не так?

1 Ответ

3 голосов
/ 29 июня 2010

Вам необходимо объединить обе таблицы:

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

Я также изменил соединения на внутренние соединения.Возможно, вы захотите сделать их обоими левыми соединениями, если у вас есть значения NULL и вы хотите их получить в результате.

Кроме того, вы уязвимы для SQL-инъекции , просто копируя $cat.

Вот некоторая специфичная для PHP информация для вас (я предполагаю, что вы используете PHP.)

...