2011-09-29 79 views
0

我有三個表,書籍和客戶端。SQL在兩個日期之間選擇具有最大重複的行

  1. 圖書(ID,標題......)
  2. 借記(BooksID,客戶端Id,BorrowingDate,....)
  3. 客戶端(ID,姓名,...)

我需要SQL查詢,該查詢將返回 一本在兩個日期之間出租次數最多的書籍。 日期將作爲參數傳遞給查詢。

+1

你試過了什麼? –

回答

1

這個怎麼樣?

SELECT * FROM Books INNER JOIN Debit ON Books.Id = Debit.BooksID WHERE BorrowingDate >= @StartDate AND BorrowingDate <= @EndDate 

如果你在你想什麼,輸出的例子編輯看起來像我可以重新定義上面的查詢,以幫助你得到你想要的東西。

並且爲了記錄,阿德里安是對的;通常情況下最好是自己嘗試一下,並帶着一個問題來找我們,而不是要求SO爲你解決問題。但希望我在這裏能讓你開始。歡迎來到SO! :)

編輯

它也只是發生在我身上,你可能會尋找這是租給最多次的兩個日期之間的書......如果是的話,試試這個:

SELECT TOP 1 Books.* FROM (
    SELECT COUNT(*) AS DebitCount, BooksID FROM Debit WHERE BorrowingDate >= @StartDate AND BorrowingDate <= @EndDate GROUP BY BooksID 
) Debits INNER JOIN Books ON Books.ID = Debits.BooksID 
ORDER BY DebitCount DESC 

希望幫助!

+0

這正是我正在尋找的。非常感謝你。 – Rajko

1

查詢...

SELECT TOP 1 * 
FROM (
    SELECT BooksID, COUNT(*) AS C 
    FROM Debit 
    WHERE BorrowingDate BETWEEN @min_date and @max_date 
    GROUP BY BooksID 
) 
ORDER BY C DESC 

...會產生含有BooksID和數量一直租住@min_date@max_date之間最次的書租金一行。

如果您需要的不僅僅是BooksID,您可以稍後輕鬆加入Books

+0

+1因爲即使我們得到了幾乎相同的答案,您已經將我介紹給了「BETWEEN」運算符! –

+0

您的回答也幫助了我,謝謝。 – Rajko

相關問題