2009-09-04 17 views
2

私は、ユーザー間のブック交換を支援するアプリケーションを作成しています。 私はPHPとMySQLを使用しています。私は両方ともかなり新しいです。これらの5つのテーブルのSQLクエリを書く方法は?

  1. ユーザー:ユーザー属性(user_idは、名前、誕生...等)との

    は私が5つのテーブル、3つのデータテーブルと2つのサービスのテーブルを持っています。

  2. 本:書籍属性(本ID、名前、著者、出版社など)。

  3. copy:書籍の実際のコピー(copy_id、条件、コメントなど)を表します。

  4. user_copy:どのユーザーがどのコピーを保持しているかをuserIDとcopyIDから構成します。

  5. copy_book: ブック属性を取得するための最も簡単で効率的な文は何であると属性をコピーします。私の質問がある

copyIDのうち、構成、コピーや本の接続を表し、bookID

ユーザーが保持するコピーごとに?

+5

なぜ別の 'copy_book'テーブルがありますか?私の考えでは、 'copy'テーブルに' bookID'カラムを持たせる方が意味があります。通常は、本とコピーの間に多対多の関係がある場合は、 'copy_book'のようなテーブルが必要です –

答えて

6

book、copy、user_copy、およびcopy_bookのような興味のあるテーブルをすべて内部結合する必要があります。ユーザーが保持しているすべてのコピーの属性を返すSELECT文は次のようになります。

SELECT B.bookID 
     , B.name 
     , B.author 
     , B.publisher 
     , C.condition 
     , C.comments 
     -- you may get other fields that you are interested in here.. 
    FROM book B 
     INNER JOIN copy_book CB ON B.bookID = CB.bookID 
     INNER JOIN user_copy UC ON UC.copyID = CB.copyID 
     INNER JOIN copy C ON C.copyID = UC.copyID 
    WHERE UC.userID = <the user Id that you want> 

私はそれが声明が何をするかはかなり明らかだ願っていますが、ご質問があれば、お問い合わせください。

関連する問題