Sql запрос Join / Где 3 таблицы

0

У меня возникли проблемы с запросом.

В настоящее время у меня 3 таблицы:

BOOK
Book_Num
Title
Publisher_Code

AUTHOR
Author_Num
Author_Fname
Author_Lname

WROTE
Book_Code
Authour_Num
Sequence

Мне нужен запрос, в котором перечислены все книги, написанные Джоном Стейнбеком. Поэтому мне нужно присоединиться к столам, но я борюсь с объединениями и испытываю определенные трудности.

Это запрос, который у меня есть до сих пор:

'SELECT W.BOOK_CODE, W.AUTHOR_NUM , B.TITLE, A.AUTHOR_LAST
    FROM WROTE W
    JOIN BOOK B ON W.BOOK_CODE = B.BOOK_CODE
    JOIN AUTHOR A ON W.AUTHOR_NUM = A.AUTHOR_LAST
    WHERE A.AUTHOR_LAST = "Steinbeck"
    ORDER BY A.AUTHOR_LAST;
'

В настоящее время он просто показывает пустой набор, но это поле, безусловно, есть.

Теги:

3 ответа

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

Я считаю, что ваша проблема здесь:

JOIN AUTHOR A ON W.AUTHOR_NUM = A.AUTHOR_LAST

Так должно быть

JOIN AUTHOR A ON W.AUTHOR_NUM = A.AUTHOR_NUM

Кроме того, похоже, что вы используете B.BOOK_CODE КОГДА ВЫ ДОЛЖНЫ БЫТЬ ИСПОЛЬЗОВАТЬ B.BOOK_NUM

Это должно получить его для вас:

SELECT W.BOOK_CODE, W.AUTHOR_NUM , B.TITLE, A.AUTHOR_LAST
FROM WROTE W
JOIN BOOK B ON W.BOOK_CODE = B.BOOK_NUM
JOIN AUTHOR A ON W.AUTHOR_NUM = A.AUTHOR_NUM
WHERE A.AUTHOR_LAST = "Steinbeck"
ORDER BY A.AUTHOR_LAST;
  • 0
    Да, это работает, спасибо большое
  • 0
    B.Book_Code при первом соединении не должен быть b.Book_num соответствии со структурой таблицы?
Показать ещё 1 комментарий
0
SELECT W.BOOK_CODE, W.AUTHOR_NUM , B.TITLE, A.AUTHOR_LAST
FROM WROTE W
JOIN BOOK B ON W.BOOK_CODE = B.BOOK_CODE
JOIN AUTHOR A ON W.AUTHOR_NUM = A.AUTHOR_LAST --its wrong 
-- it must A.Author_Num
WHERE A.AUTHOR_LAST = "Steinbeck"
ORDER BY A.AUTHOR_LAST

Вы должны иметь отношение к первичному ключу ПК и к ключу.

  • 0
    B.Book_Code также не существует. Должен быть B.Book_num, я думаю.
0

Я думаю, что проблема заключается в этой линии:

ПРИСОЕДИНЯЙТЕСЬ В АВТОРЕ A НА W.AUTHOR_NUM = A.AUTHOR_LAST

Вы присоединяетесь к Author_Num из написанной таблицы в Author_Last из таблицы Author.

Попробуйте это: JOIN AUTHOR A ON W.AUTHOR_NUM = A.AUTHOR_NUM

Ещё вопросы

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