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