Как получить значение по id в связанных таблицах в бд?

Ссылка скопирована
13 января 2026 1 ответ

Есть множество количество id, нужно узнать к каждому из них соответствующие значения. Каждое id относиться к той или иной таблице.
К примеру:

books:
id: 1, name: 'a', author_id: 1
id: 2, name: 'b', author_id: 2

authors:
id: 1, name: 'aa'
id: 2, name: 'bb'

Нужно узнать значение books.author, точнее author.name. Также нужно и обратно, зная значение, найти id, к которому оно относиться (указываем, к какой таблице относиться значение).

Как реализовать такой код? нужны ли для это joins?

Дополнительно:

Как реализовать такое код?

да, код

нужны ли для это joins?

Да, нужны

id: 1, name: 'a', author: 1

желательно соблюдать рекомендации по именованию полей и таблиц:
1) так как поле author очевидно является связью по id с таблицей author, ее название должно быть author_id,
2) таблица с авторами должна называться во множественном числе - authors.

  • так как поле author очевидно является связью по id с таблицей author, ее название должно быть author_id

    То же самое относится и к самой таблице author - ключ в ней тоже надо называть author_id. Во-первых, в запросе не придётся гадать, чей id, во-вторых, можно вместо JOIN ON использовать более очевидный JOIN USING. А иногда и вовсе NATURAL JOIN.

  • Нашла, что нужно было. Как в данном случае применять join?
    SELECT name FROM authors WHERE id=1 // получили name, зная id author SELECT id FROM authors WHERE name='aa' // получили id author, зная name

    SELECT name FROM authors WHERE id=1 // получили name, зная id author SELECT id FROM authors WHERE name='aa' // получили id author, зная name

  • Akina, тут спорно, так как ид у нас именно первичный автоинкремент, и мы знаем имя таблицы, то смысла называть его автор_айди отпадает, это же не пивот...
  • Полина Титова,

    Как в данном случае применять join?

    по документации. Определите как связаны таблицы и сделайте джоин по связанным полям.

    Похоже что вы пытаетесь сделать домашку силами сообщества, что во первых нарушает правила ресурса, а во вторых не несет никакого смысла, какое после этого может быть обучение...

  • ThunderCat, это практика, на основе забытого обучения. Я поняла как это делать после написания вопроса, хотела уточнить, как улучшить код, поэтому и спросила по поводу join. Да, лучше перечитать теорию
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Сергей Миронов Ответ

Для того чтобы получить значение по id в связанных таблицах в базе данных, вам необходимо воспользоваться оператором JOIN. JOIN позволяет объединить данные из двух или более таблиц на основе определенного условия, которое обычно представляет собой связь между таблицами.

Предположим, у вас есть две таблицы: "users" и "orders". В таблице "users" есть столбец "id", который является первичным ключом, а в таблице "orders" есть столбец "user_id", который является внешним ключом, связывающим таблицы.

Для того чтобы получить значение по id из связанных таблиц, вы можете использовать следующий SQL запрос:

SELECT users.name, orders.order_number
FROM users
JOIN orders ON users.id = orders.user_id
WHERE users.id = 1;

SELECT users.name, orders.order_number FROM users JOIN orders ON users.id = orders.user_id WHERE users.id = 1;

В этом запросе мы выбираем имя пользователя и номер заказа из таблиц "users" и "orders" соответственно, при условии что id пользователя равен 1. Оператор JOIN объединяет данные из обеих таблиц на основе условия users.id = orders.user_id.

Таким образом, используя оператор JOIN в SQL запросе, вы можете легко получить значения по id в связанных таблицах в базе данных. Не забудьте заменить названия таблиц и столбцов на соответствующие в вашей базе данных.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно