私はこの問題について大きな脳のおならを抱えています。誰かがこれを見て、これを行う方法についての手がかりを与えてくれることを願っています.
ユーザー、book_copies、図書館の場所、書籍の 4 つのテーブルがあります。
Create table book
( id int not null auto incre,
name varchar(55),
primary key(id) );
Create table book_copies
( id int not null auto incre,
number of copies),
primary key(id) );
Create table location
( id int not null auto incre,
address varchar(55),
primary key(id) );
Create table users
( id int not null auto incre,
name varchar(55),
primary key(id) );
book_copies と場所、bookcopies とユーザー、book と book のコピーの間に多対多テーブルを追加して多対多の関係があります。
Create book_copies_locations
( locationid int (11) not null,
bookcopyid int (11) not null,
primary key(locationid,bookecopyid) ,
foreign key (locationid) references locations.id,
foreign key (bookcopyid) references book_copies.id) );
Create table borrow
( userid int (11) not null,
bookcopyid int (11) not null,
checkoutdate varchar(55),
duedate varchar(55),
primary key(userid,bookecopyid) ,
foreign key (userid) references users.id,
foreign key (bookcopyid) references book_copies.id) );
Create table book_copies_books
( booksid int (11) not null,
bookcopyid int (11) not null,
checkoutdate varchar(55),
duedate varchar(55),
primary key(booksid,bookecopyid) ,
foreign key (booksid) references books.id,
foreign key (bookcopyid) references book_copies.id) );
私がやりたいことは、すべての本のコピーを追跡し、それがどの場所にあるのか、どのユーザーがチェックアウトしたのか、いつの日付なのかを知ることです。
私は次のようなものを追加しました
insert into borrow (userid,bookcopyid, checkoutdate, duedate) values( '1', '1', 'dec 18', 'jan 11')
insert into users (id,name) values( '1', 'bob')
insert into book_copies (id,number_of_copies) values( '2', '33')
insert into books (id,name) values( '1', 'harry potter')
insert into locations (id,address) values( '1', 'health science public library')
12 月 18 日にチェックアウトされ、1 月 11 日に期限が切れ、健康科学公共図書館に所蔵されているハリー ポッターの 2 つのコピーがあることを返すクエリを作成するにはどうすればよいですか?
多対多のテーブルでテーブルを正しく設定していますか? これを行うべき別の方法はありますか?