如何为这5个表编写SQL查询?

时间:2009-09-04 19:31:11

标签: php sql database mysql

我正在编写一个帮助预订用户之间交流的应用程序。 我正在使用PHP和MySQL,我对它们都很陌生。

我有5个表,3个数据表和2个服务表:

  1. user:具有用户属性(user_id,name,birth ...等)。

  2. 书籍:书籍属性(book_id,姓名,作者,出版商等)。

  3. copy:代表书籍的实际副本(copy_id,条件,评论......等)。

  4. user_copy:描述哪个用户拥有由userID和copyID组成的副本。

  5. copy_book:表示由copyID和bookID组成的副本和书籍的连接

  6. 我的问题是: 什么是获得最简单,最有效的声明 预订用户拥有的每个副本的属性和副本属性?

1 个答案:

答案 0 :(得分: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>

我希望陈述的内容非常清楚,但如果您有任何疑问,请询问。