[英]Select information from 3 tables in SQL
我在 SQLite 數據庫中有三個表:book、author 和 loaned_books。 他們看起來像這樣
書: _id | 作者_id | 標題 | 主題
作者: _id | 名字 | 姓
借出的書: _id | book_id | 貸款日期 | 截止日期
author_id 是 author 表的外鍵, book_id 是 book 表的外鍵。
我正在嘗試創建一個查詢,以提取所有未借出的書籍(及其相關作者)。 到目前為止,我有這個查詢:
SELECT book.title, book.subject, author.first_name, author.last_name
FROM book, author
INNER JOIN loaned_books ON book._id != loaned_books.book_id AND book.author_id = author._id
除了所有返回的記錄都是重復的之外,這一工作完成了這項工作。 我曾嘗試在列名上使用 DISTINCT,但結果也是錯誤的。
什么是返回所有未借出的書籍(及其相關作者)的查詢?
您加入book
和author
的方式:
FROM book, author
是錯誤的,因為它返回 2 個表的笛卡爾積。
您需要一個 LEFT JOIN 到loaned_books
並返回不匹配的行(意思是不存在於loaned_books
的書籍)
SELECT b.title, b.subject, a.first_name, a.last_name
FROM book AS b
INNER JOIN author AS a ON b.author_id = a._id
LEFT JOIN loaned_books AS l ON b._id = l.book_id
WHERE l._id IS NULL
您能否嘗試執行此操作:
SELECT distinct book.title, book.subject, author.first_name, author.last_name FROM book inner join author on book.id = author._id left outer join loaned_books ON book._id = loaned_books.book_id where loaned_books.book_id is null or length(loan_date) = 0 or loan_date = ''
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.