Запрос двух баз данных с таблицей карт

#mysql #sql

#mysql #sql

Вопрос:

Я рвал на себе волосы из-за этого … и я совершенно уверен, что это достаточно прямолинейно … но я не могу найти ответ.

То, что я пытаюсь сделать, это извлечь информацию из двух таблиц. Я довольно новичок, чтобы ПРИСОЕДИНИТЬСЯ. Я думаю, в качестве практического примера, допустим, у меня есть база данных книг (идентификатор, название, автор, издание, год). Затем у меня есть база данных классов (идентификатор, предмет, учитель). Некоторые классы будут использовать одну и ту же книгу. Итак, я создал таблицу карт, как описано здесь:

Select-Query/Joinamanytomanymaptable.htm»>http://www.java2s.com/Tutorial/MySQL/0040_Select-Query/Joinamanytomanymaptable.htm

Я создал таблицу с именем ClassBook, где идентификатор класса (ClassID) был указан в одном столбце, а идентификатор книги (BookID) — в другом.

что я хочу, так это нарисовать информацию о КНИГЕ на основе класса. Поэтому, если идентификатор класса равен 3, я хочу, чтобы все книги, связанные с этим классом, и их информация. Ниже приведен пример того, что я запрашиваю:

ВЫБЕРИТЕ * ИЗ ClassBook ПРИСОЕДИНИТЬСЯ К книгам ПО ClassID = 3

Из этого запроса, если идентификатор класса (3) находится в таблице (ClassBook) 8 раз, он будет выводить КАЖДУЮ книгу и ее информацию 8 раз. Все, что мне нужно, — это книги, связанные с классом id 3, и их информация. Любая помощь будет очень признательна!

Ответ №1:

 SELECT * FROM class
JOIN ClassBook on class.id = ClassBook.ClassID
JOIN books on ClassBook.BookID = books.id
WHERE Class.ID = 3;
 

Это формат, который вы будете использовать для связывания всего вместе. Обратите внимание, что on обычно помещается предложение, описывающее критерии, которые связывают объединяемые таблицы. where Предложение предназначено для ограничения выбранных записей.

Комментарии:

1. Я буду любить тебя вечно =) Огромное спасибо!

Ответ №2:

Попробуйте это

 SELECT books.* FROM ClassBook CB
JOIN books ON  CB.bookid=Books.id
WHERE cb.ClassID=3 
 

Объединение создаст больший «результат» всех столбцов из таблицы class book и всех столбцов из таблицы book, которые имеют один и тот же идентификационный номер книги… Затем предложение WHERE показывает только результаты из этого большего результата, который те книги использовали в ClassID = 3. Синтаксис books.* показывает только столбцы из таблицы books, a * сам по себе будет отображать все столбцы из обеих таблиц.