PHP / MYSQL Нужно ли присоединиться к SQL?

0

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

Обязательно скажите мне, если я что-то пропустил,

Спасибо за ваше время.

  • 0
    JOIN было бы очевидным решением. IN и EXISTS являются альтернативами.
  • 0
    Эй, @GordonLinoff, какое присоединение ты бы порекомендовал?
Показать ещё 2 комментария
Теги:

2 ответа

1
Лучший ответ

да, вы пропустили что-то, нужно добавить столбец 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";
0

Если один рецепт одной категории,

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";
  • 0
    Эй, я попробую это, спасибо за вашу помощь!
  • 0
    Просто чтобы быть уверенным, я помещаю этот код в MySQL или часть моего PHP? @KedarLimaye
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню