如何阻止数据重复从多个表sql调用的数据

时间:2013-11-18 12:54:06

标签: sql ms-access

我正在尝试打印以下列isbntitlefNamesurnamequantity,但由于有多个订单,数据打印出来的每个订单,而不是只有一个订单数量的数字。我该怎么做?

enter image description here

SELECT book.isbn, book.title, author.fName, author.surname, orders.quantity
FROM book, author, orders
WHERE orders.bookID = book.isbn
ORDER BY book.isbn DESC;

2 个答案:

答案 0 :(得分:2)

您需要GROUP BY条款。我还建议添加显式连接(并删除现在多余的WHERE子句):

SELECT book.isbn, book.title, author.fName, author.surname, SUM(orders.quantity) AS TotalOrders
FROM (book INNER JOIN author ON book.authorID = author.authorID)
  INNER JOIN orders ON book.isbn = orders.bookID
GROUP BY book.isbn, book.title, author.fName, author.surname
ORDER BY book.isbn DESC

答案 1 :(得分:0)

如果您想要每个订单的数量,您的查询将为每个订单返回一行。如果您使用某种应用程序来显示结果,那么您可以使用应用程序代码来解决问题。

另一方面,如果您只是想知道订购了多少本书,那么您的查询将变为:

SELECT book.isbn, book.title, author.fName, author.surname, sum(orders.quantity) total
FROM book, author, orders
WHERE orders.bookID = book.isbn\
group by book.isbn, book.title, author.fName, author.surname
ORDER BY book.isbn DESC