2009-09-27 92 views
-1

我得到以下結果的select語句:SQL數據庫的問題

On_loan barcode 
Y  12345 
Y  12345 
N  12345 
N  12344 
Y  12344 

一本書每個條碼可以有多個副本。用戶可以放置一本書。例如,用戶'1'已經預訂了書籍12345和12344.以上結果表明:具有條形碼12344-的一本書可用,另一本書不可用。我希望能夠在PHP中顯示兩個區域,頂部顯示已準備好取出(已擱置)的圖書,另一部分顯示已暫停擱置的圖書。從我的選擇查詢中,我現在希望我的選擇檢查每個條形碼12345和12344是否已返回一本書。如果有,我將使用hold_date來查看它是否爲特定書籍的最早保留。

我明白on_loan告訴我一本書是否已經返回,但是我怎樣才能從on_loan中爲每本書使用'N'。我相信獨特不會起作用。

我該如何去做這件事。

我保持表 具有以下字段:

user 
isbn 
hold_date 
+0

條形碼和ISBN之間是否存在關聯? – JohnFx 2009-09-27 18:56:03

+0

抱歉isbn應該是條形碼 – user179780 2009-09-27 18:59:31

回答

1

我認爲您正在尋求一種方法來檢查最近返回的書籍是否被擱置以保存其他客戶,對嗎?

這本書實際上應該有一個獨特的條碼,每本圖書的實體副本,以及一本書的ISBN。

保留將由國際標準書號放置。 當一本書被簽入時,輸入該複製條形碼,然後取出其ISBN編號,看看是否有其他顧客正在等待它。 如果是這樣,請將該副本的狀態設置爲「保留」,創建一個關聯的圖書館以保存記錄關係。 否則,這本書的狀態設置爲檢查。

假設有一個表「複製」是有獨特的條形碼每個物理拷貝的紀錄,並涉及到一個名爲「書」 表有一本書的信息比如ISBN和作者等,還有一個名爲'hold'的表格,其中包含一個ISBN信息(或更好,book.id)

以下是所有簽入並保留的副本。

select * from copy left join book on book.id = copy.book_id where copy.status_id = get_book_status('in') and book.isbn in (select isbn from hold); 
0

這不是一個相當良好的數據庫設計,如果你問這種問題。首先,您應該將其轉換爲數據庫third normal form。 然後它將看起來像三個表:書籍(name, barcode, available_count),users(user_id, name)和關係表users_to_books(user_id, book_barcode, state),其中狀態可以是具有值「on hold」和「on hands」的值的菜單。 之後,你可以做所有類型的東西與計數和檢查。

+0

您好,我有更多的桌子..我沒有解釋清楚。我會打字。 – user179780 2009-09-27 19:12:19

0

也許你應該有一個帶有ID,條形碼,條形碼錶的鏈接的bookTitle表,然後你可以做一個查詢來返回一個bookTitle的所有副本,並使用查詢返回貸款條形碼而不是。

該ID使其具有獨特性。