У меня возникли проблемы с запросом.
В настоящее время у меня 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;
'
В настоящее время он просто показывает пустой набор, но это поле, безусловно, есть.
Я считаю, что ваша проблема здесь:
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;
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
Вы должны иметь отношение к первичному ключу ПК и к ключу.
Я думаю, что проблема заключается в этой линии:
ПРИСОЕДИНЯЙТЕСЬ В АВТОРЕ A НА W.AUTHOR_NUM = A.AUTHOR_LAST
Вы присоединяетесь к Author_Num из написанной таблицы в Author_Last из таблицы Author.
Попробуйте это: JOIN AUTHOR A ON W.AUTHOR_NUM = A.AUTHOR_NUM
B.Book_Code
при первом соединении не должен бытьb.Book_num
соответствии со структурой таблицы?