Объединение нескольких таблиц в запросе SQL
Я пытаюсь выбрать информацию из нескольких таблиц в моей базе данных, которые отображают детали нескольких книг и заказов.
Я запрашиваю isbn в 5 таблицах (автор, автор книги, книга, строка заказа и книга заказа) определенной книги, чтобы получить информацию о книге и информацию о заказах, которые были размещены для этой книги.
SELECT orderline.isbn, title, ordernumber, orderdate, customername, numcopies, orderline.bookprice, authorname
FROM author natural join bookauthor natural join book join orderline natural join bookorder
WHERE orderline.isbn = book.isbn
and book.isbn = "1491936169"
ISBN: 1491936169 Title: Kafka: The Definitive Guide: Real-Time Data and Stream Processing at Scale
Author: Neha Narkhede, Todd Palino, Gwen Shapira
Order Number Date Customer Copies Price Total
N201699998 2016-12-24 Mary Hall 2 33.99 67.98
N201799999 2017-01-03 Aran Clauson 1 33.99 33.99
Total:
Однако есть некоторые isbns, которые не были упорядочены и, таким образом, отсутствуют в таблице строк порядка, но находятся в таблице книг, которая отображает isbn для всех книг.
Я хочу отобразить информацию о книгах для тех книг, которые также не имеют заказов, таких как:
ISBN: 0387848576 Title: The Elements of Statistical Learning
Author: Jerome Friedman, Trevor Hastie, Robert Tibshirani
No orders
по существу, я хочу таблицу, отображающую информацию о книге для значений isbn и null, где нет заказов. Я предполагаю, что это было бы какое-то естественное внешнее соединение, однако мои попытки привели к пустым таблицам.
Обновлен запрос на удаление дубликатов с помощью группировки по
SELECT ordernumber, orderdate, customername, orderline.isbn, title, orderline.numcopies, stock, shipmentbook.numcopies as shipcopies, authorname
FROM author natural join bookauthor natural join book left join bookorder natural join orderline
ON book.isbn = orderline.isbn
left join mousavs.shipmentbook
ON book.isbn = shipmentbook.isbn
WHERE stock > orderline.numcopies
GROUP BY ordernumber
ORDER BY orderdate, ordernumber, ISBN
Код ошибки: 1055. Выражение № 4 из списка SELECT отсутствует в предложении GROUP BY и содержит неагрегированный столбец mousavs.orderline.isbn, который функционально не зависит от столбцов в предложении GROUP BY.
1 ответ
Оставьте соединение 101... и вы действительно.... действительно должны прочитать о соединениях, если вы планируете работать в RDMS.
select
b.isbn
,b.title
,b.bookprice
,b.stock
,a.authorname
,o.ordernumber
,o.numcopies
,o.price
from
book b
inner join
BookAuthor ba on
ba.isbn = b.isbn
inner join
Author a on
a.authorid = ba.authorid
left join
orderline o on
o.isbn = b.isbn
left join
bookorder bo on
bo.ordernumber = o.ordernumber
where
b.isbn = 1491936169