SQL veritabanı sorunu

2 Cevap php

Ben aşağıdaki sonuçları gösteren bir deyim var:

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

Bir kitap için her barkod birden fazla kopyası olabilir. Kullanıcılar beklemeye bir kitap yerleştirebilirsiniz. Örneğin kullanıcı '1 'kitap 12345 ve 12344 ayırmıştır Yukarıdaki sonuçlar göstermektedir:. Barkod 12.344 ile iki kitap olduğu - bir mevcut, diğer kullanılamaz. Ben iki PHP, (beklemede olduklarını) almaya hazır üst gösteren kitaplarda bölgelere ve beklemeye yerleştirilmiş olan kullanılamayan diğer gösteren kitapları göstermeye muktedir istiyorum. Benim seçin sorgudan ben şimdi bir kitap iade edilip, her barkod 12.345 görmek için kontrol ve 12344 benim seçme istiyorum. O varsa ben o zaman belirli bir kitap için eğer onun erken Tut görmek için hold_date kullanacağız.

Ben on_loan bir kitap nasıl ben her kitap için on_loan gelen 'N' kullanabilirsiniz, ancak iade edilip beni bilgilendirir anlıyorum. Ben ayrı çalışmaz inanıyorum.

Nasıl bunu hakkında gidebilirsiniz.

My Hold table has the following fields:

user
isbn
hold_date

2 Cevap

Sana son zamanlarda döndü kitap doğru, başka bir müşteri için beklemeye olup olmadığını kontrol etmek için bir yol soran düşünüyorum?

Kitap aslında kütüphanede bir kitabın her bir fiziksel kopya başına benzersiz bir barkod, yanı sıra genel olarak kitap için ISBN olmalıdır.

Holds would be placed by ISBN. When a book is checked in, enter that copies barcode, then pull its ISBN number and see if another customer is waiting for it. If so, set the status for that copy to 'hold', create a related library book to hold record relation. Otherwise, set the book status to checked in.

Assuming there is a table 'copy' that has a record for each physical copy with unique barcode and relates to a table called 'book' that has info about a book like ISBN and Author etc, and a table called 'hold' that has the hold info an ISBN (or better, book.id)

Burada kontrol ve onlara bir tutun tüm kopyaları vardır.

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);

Belki kimliği ile bir Booktitle tablo olmalıdır, Barkod, barkod tabloları bağlantı ve sonra bir Booktitle tüm kopyalarını iade ve ödünç ve olmayan barkodlar dönmek için sorgular kullanmak için bir sorgu yapabilir.

Kimlik onu benzersiz kılan.