Как получить значение по id в связанных таблицах в бд?
Есть множество количество 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. Да, лучше перечитать теорию
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы получить значение по 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;
В этом запросе мы выбираем имя пользователя и номер заказа из таблиц "users" и "orders" соответственно, при условии что id пользователя равен 1. Оператор JOIN объединяет данные из обеих таблиц на основе условия users.id = orders.user_id.
Таким образом, используя оператор JOIN в SQL запросе, вы можете легко получить значения по id в связанных таблицах в базе данных. Не забудьте заменить названия таблиц и столбцов на соответствующие в вашей базе данных.