Mysql N对N关系选择
我是mysql新手,在选择具有n-to-n关系的实体时遇到了一些问题。 我有以下表格:Mysql N对N关系选择,mysql,database,Mysql,Database,我是mysql新手,在选择具有n-to-n关系的实体时遇到了一些问题。 我有以下表格: books(isbn, name, ...) authors(author_id, fullname) writtens(author_id, isbn) // primary key (author_id, isbn) 有没有办法找到两位作者至少一起写了两本书的所有作者对? 例如: BOOKS: isbn name 'isbn1' 'book1' 'isbn2' 'book2' 'isbn3'
books(isbn, name, ...)
authors(author_id, fullname)
writtens(author_id, isbn) // primary key (author_id, isbn)
有没有办法找到两位作者至少一起写了两本书的所有作者对?
例如:
BOOKS:
isbn name
'isbn1' 'book1'
'isbn2' 'book2'
'isbn3' 'book3'
AUTHORS:
author_id fullname
1 'author1'
2 'author2'
3 'author3'
WRITTENS:
author_id isbn
1 'isbn1'
1 'isbn2'
1 'isbn3'
2 'isbn1'
2 'isbn2'
3 'isbn2'
结果可能如下所示:
author_id author_id
1 2
因为我是mysql新手,所以我期望的结果格式可能不正确,您可以更改结果格式。
谢谢大家!
查找两位作者至少一起写了两本书的所有作者对
选择t1.author\u id,t2.author\u id
从写入t1
使用(isbn)连接写入t2
其中t1.author\u id1
如果writens
中的(作者id,isbn)
定义为唯一,则不需要使用DISTINCT
如果您需要作者姓名,请另外加入两份
作者
表。只需要为t1.author\u id为writed\u by,t2.author\u id为writed\u与@SlavaRozhnev一起使用,我认为这是不正确的。没有任何信息表明某位作者是主要作者,所以我们必须假设他们是同行。亚伦总是被“写”出来,而扎卡里却没有机会,这是不好的。。。