# 查询出版社所有的书籍名字和出版社的名字
#出版社查书 反向 多个
# res = models.Publish.objects.filter(name='东方出版社').values('name','book__title')
# print(res)
# 所有书查出版社 正向 一个
# res = models.Book.objects.filter().values('title','publish__name')
# print(res)
# 查书id为1的 出版社 正向 一个
# res = models.Book.objects.filter(pk=1).values('title','publish__name')
# print(res)
# 查询书籍主键是1的作者的手机号
#正向 书籍查作者
# res = models.Book.objects.filter(pk=1).values('authors__author_detail__phone')
# print(res)
#反向 作者查收书籍
# res = models.Author.objects.filter(book__id=1).values('author_detail__phone','book__title')
# print(res)
#查询辰东的书籍 和手机号
#正向
# res = models.Book.objects.filter(authors__name='辰东').values('title','authors__author_detail__phone')
# print(res)
#反向
# res = models.Author.objects.filter(name='辰东').values('book__title','author_detail__phone')
# print(res)
# 查询辰东和唐家三少的书籍 和手机号
#正向
# res = models.Book.objects.filter(authors__name__in=['辰东','唐家三少']).values('title','authors__author_detail__phone')
# print(res)
#反向
# res = models.Author.objects.filter(name__in=['辰东','唐家三少']).values('book__title','author_detail__phone')
# print(res)
#通过手机号来查询书籍 和作者的名字
#反向
# res = models.AuthorDetail.objects.filter(phone=111).values('author__name','author__book__title')
# print(res)
#通过书籍找到作者和作者的详请
# res = models.Book.objects.filter(pk=1).values('authors__name','authors__author_detail__phone','authors__author_detail__addr')
# print(res)
#通过出版社找到书,作者,作者详情
#出版社查书 反向
# res = models.Publish.objects.filter(name='东方出版社').values('book__title','book__authors__name','book__authors__author_detail__addr')
# print(res)
#正向 书查出版社
# 1.查询书籍主键为1的出版社
# book_obj = models.Book.objects.filter(pk=1).first()
# # 书查出版社 正向
# res = book_obj.publish
# print(res)
# print(res.name)
# print(res.addr)
res = models.Book.objects.filter(title='遮天').first() #是列表套的形式,必须得这样取
book_title = res.title
publish_name = res.publish.name
aothor_name = res.authors.all().first().name
print(book_title,publish_name,aothor_name)
'''
select * from app01_book where app01_book.id in
(select book_id from app01_book_authors where app01_book_authors.author_id=
(select id from app01_author where app01_author.id =
(select id from app01_authordetail where app01_authordetail.phone=111)))
slect * from "app01_authordetail"
inner join "app01_author" on ("app01_authordetail"."id" = "app01_author"."author_detail_id")
inner join "app01_book_authors" on ("app01_author"."id" = "app01_book_authors"."author_id")
inner join "app01_book" on ("app01_book_authors"."book_id" = "app01_book"."id") where "app01_authordetail"."phone" = 111
'''
'''
这里就不需要在写all了,查到的数据都会显示出来
正向查询和反向查询还是根据外键字段在谁那里来判断
filter的过滤条件:通过什么查什么就过滤谁 通过出版社 找作者,作者的书,作者的详情 filter的就是出版社
跨表操作直接__就可以跨到关联过字段的表上,然后就可以直接__name取字段
哪怕是出版社只关联了作者,也还是可以通过作者__书找到书,他们之间有一条关联的线就可以随意跨
'''