Оператор SELECT не возвращает никаких результатов при внутреннем объединении трех таблиц и выборе одного столбца из двух - PullRequest
0 голосов
/ 23 февраля 2019

Цель: написать запрос, который предоставит список постоянных клиентов, которые одолжили книги, и книги, которые они одолжили.

  • Book: идентификатор книги, заголовок, author_first
  • Patron: имя, телефон, номер карты
  • Loan: номер карты, идентификатор книги, date_out, date_due

Вот код, который я придумал:

select 
    Patron.name,
    Book.title
from 
    Patron
inner join 
    Loan on Patron.Card_Number = Loan.card_number
inner join 
    Book on Loan.book_ID = Book.book_id
where 
    Loan.date_out is not null;

Возвращает правильные столбцы, но не возвращает никаких данных.

I have a screenshot of the tables here

Я использую SSMS с установленным SQL Server 2017.Я хочу, чтобы он сопоставил номер карты в таблице Patron с таблицей Loan, чтобы увидеть, что этот номер карты взял кредит, а затем выберите название этой книги на основе идентификатора книги.

1 Ответ

0 голосов
/ 23 февраля 2019

Ваш loan.card_number отличается от Patron.Card_Number - поэтому он не показывает никаких записей. Один из способов может быть - cast loan.card_number to int как показано ниже -

select Patron.name,
    Book.title
    from Patron
        Inner Join Loan on Patron.Card_Number=cast(Loan.card_number as int)
        Inner Join Book on Loan.book_ID=Book.book_id
    where Loan.date_out is not null
...