日期:2014-05-20  浏览次数:20680 次

sql多表查询的问题
表Person
id     name   
1      jack
2      mike 

表Person_Relation_Book
id     aId    cId
1      1       1
2      1       2
3      1       3
4      2       1

表Book
id    name   
1     aaa
2     bbb
3     ccc


Mysql数据中存在这样三张表,想查询得到这样的结果,得到拥有BookId为1,2,3的PersonId,请教大家用mysql要怎么编写脚本





mysql 数据库

------解决方案--------------------
根据id查id这太容易了吧。select aid from Person_Relation_Book where cid=?就可以了。

如果是要求根据book.name查询person.name,那就需要使用多级子查询完成。
------解决方案--------------------
什么乱七八糟的,看不懂
你是不是要拥有1,2,3所有书的人?
如果1,2,3代表的是book表里面所有的书,那么

 SELECT aId
   FROM Person_Relation_Book prb,
(SELECT count(*) AS cnt FROM Book) b
  GROUP BY prb.aId
 HAVING count(*) = b.cnt


如果是任意的组合的,比如1,3,7,18

 SELECT aId
   FROM Person_Relation_Book
  WHERE cId IN (1,3,7,18)
  GROUP BY aId
 HAVING count(*) = 4