У меня есть такие таблицы.Множество постоянных соединений с графом
Title
стол:
Book_Title | ISBN |Publisher_ID
--------------------------------------
Engineering BK | 1234556 | 1
Time for a change | 1233333 | 2
Digital Fortress | 2132312 | 3
Davinci Code | 2314234 | 3
Angles and Demons | 1232323 | 3
Книга ISBN не нормальна ISBN это из int
типа.
Copy
стол:
Copy_ID | ISBN
-----------------------
1 | 1234556
2 | 1233333
3 | 2132312
4 | 2314234
5 | 1232323
6 | 1232323
Loan
стол:
Borrower_ID | Copy_ID | Date_Borrowed |Date_Returned
------------------------------------------------------
1 | 1 | 2014-10-20 | NULL
2 | 2 | 2014-10-18 | NULL
3 | 3 | 2014-10-11 | 2014-10-20
1 | 4 | 2011-11-11 | 2011-11-25
2 | 5 | 2010-10-10 | NULL
4 | 6 | 2012-12-12 | NULL
Статус книг, которые еще не возвращены сохраняются как NULL.
Я хочу выбрать все заголовки, в которых все копии заимствованы и до сих пор не возвращены. Иными словами, титры, которые имеют все копии, заимствованные в таблице займов с Date_Returned как NULL.
Я пытаюсь сделать это вот так.
SELECT DISTINCT(T.Book_Title) AS BookTitle
FROM Title T
INNER JOIN Copy CP ON T.ISBN=CP.ISBN
INNER JOIN Loan LN ON CP.Copy_ID=LN.Copy_ID
WHERE (SELECT COUNT (CP.Copy_ID) FROM Title T
INNER JOIN Copy CP ON T.ISBN=CP.ISBN WHERE T.Book_Title=''
)
=
(SELECT COUNT (CP.Copy_ID)FROM Title T INNER JOIN Copy CP ON T.ISBN=CP.ISBN
INNER JOIN Loan LN ON CP.Copy_ID=LN.Copy_ID
WHERE LN.Date_Returned IS NULL AND T.Book_Title='')
GROUP BY T.Book_Title
Но в этом я должен упомянуть названия книг по названию в каждом подзапросе. Но мне нужно проверить все заголовки в заголовках.
Как это решить? Любая помощь будет действительно велика. Заранее спасибо
Спасибо, что работает. Если вы не возражаете, можете добавить небольшое объяснение того, что он делает. – Sahil