Я знаю, что это может быть глупый вопрос, но я не очень разбираюсь в SQL-соединениях, и я не хочу этого делать, не зная, что это правильно.
Я создал сайт рецептов, которые имеют разные категории, такие как хлеб, печенье, торт и т.д., Все они находятся в таблице категорий базы данных. У меня есть рецепты в таблице рецептов.
Проблема, с которой я столкнулся, - на странице категории, поскольку каждая категория имеет свой собственный идентификатор, я создал одну страницу, где каждая категория перенаправляла и использовала этот код
<a href="index.php?p=selected&id=<?php echo $recipe['cat_id']; ?>">
На этой странице отображаются разные категории на основе идентификатора, идентификатор изменен в URL-адресе, поэтому для категории хлеба он будет выглядеть следующим образом:
index.php? р = выбран & ID = 1
Итак, поскольку для каждой категории есть одна страница, я хочу, чтобы она отображала рецепты, я использовал этот код:
$query = "SELECT * FROM recipes ORDER BY recipe_id ASC";
но это отображает каждый рецепт в базе данных, я хочу, чтобы он отображал рецепт на основе той категории, в которой он находится, как показано ниже:
$query = "SELECT * FROM recipes WHERE cat_id = :id ORDER BY recipe_id ASC";
Cat_id является частью таблицы категорий, поэтому мне нужно присоединиться к этой таблице в таблице рецептов, чтобы она работала?
Обязательно скажите мне, если я что-то пропустил,
Спасибо за ваше время.
да, вы пропустили что-то, нужно добавить столбец cat_id в таблицу рецептов, которая равна cat_id в таблице категорий, когда вы добавляете элемент в таблицу рецептов, а затем просто
$query = "SELECT * FROM recipes
WHERE recipes.cat_id = :id";
или же
$id = intval($_GET['id']);
$query = "SELECT * FROM recipes
WHERE recipes.cat_id = $id";
Если один рецепт одной категории,
SELECT * FROM recipes inner join category
on category.id=recipe.cat_id
where cat_id = :id ORDER BY recipe_id ASC";
Если одна катерия много рецептов, тогда
SELECT * FROM recipes leftjoin category
on category.id=recipe.cat_id
where cat_id = :id ORDER BY recipe_id ASC";
JOIN
было бы очевидным решением.IN
иEXISTS
являются альтернативами.