首页 > 其他分享 >基于双下划线的跨表查询 进阶连续跨表查询

基于双下划线的跨表查询 进阶连续跨表查询

时间:2023-11-29 18:34:55浏览次数:46  
标签:__ 进阶 res publish 查询 跨表 book app01 name

基于双下划线的跨表查询 :

# 连表查询
# 基于对象的跨表查询,先查对象,通过对象再去查另一个对象(正向:字段名,反向:表名小写/表名小写_set.all())


# 地址为山东的作者写的所有书
# author_detail=models.AuthorDetail.objects.get(addr='山东')
# author=author_detail.author
# books=author.book_set.all()
# print(books[0].name)

# (作业)地址为山东的作者写的所有书的出版社名字


### 基于双下划线的跨表查之 一对多
# 正向:字段名
# 反向:表名小写
# filter,values,values_list(写 __ 跨表)
# 练习: 查询北京出版社出版过的所有书籍的名字与价格(一对多)
# SELECT `app01_book`.`name`, `app01_book`.`price` FROM `app01_publish` LEFT OUTER JOIN `app01_book` ON (`app01_publish`.`id` = `app01_book`.`publish_id`) WHERE `app01_publish`.`name` = '北京出版社' ;
# res=models.Publish.objects.filter(name='北京出版社').values('book__name','book__price')
# print(res)
#SELECT `app01_book`.`name`, `app01_book`.`price` FROM `app01_book` INNER JOIN `app01_publish` ON (`app01_book`.`publish_id` = `app01_publish`.`id`) WHERE `app01_publish`.`name` = '北京出版社';

# res=models.Book.objects.filter(publish__name='北京出版社').values('name','price')
# print(res)


## 多对多
# 练习: 查询egon出过的所有书籍的名字,价格(多对多)
#反向
# res=models.Author.objects.filter(name='egon').values('book__name','book__price')
# print(res)

# 正向
# res=models.Book.objects.filter(authors__name='egon').values('name','price')
# print(res)

#查询egon的手机号
# res=models.Author.objects.filter(name='egon').values('author_detail__phone')
# print(res)
# res=models.AuthorDetail.objects.filter(author__name='egon').values('phone')
# print(res)

 

 

进阶连续跨表查询:

# 连续跨表
#查询北京出版社出版过的所有书籍的名字以及作者的姓名
# res=models.Publish.objects.filter(name='北京出版社').values('book__name','book__authors__name')
# print(res)

# res=models.Book.objects.filter(publish__name='北京出版社').values('name','authors__name')
# print(res)

# res=models.Author.objects.filter(book__publish__name='北京出版社').values('book__name','name')
# print(res)

# 手机号以189开头的作者出版过的所有 书籍名称 以及 出版社名称
# res=models.AuthorDetail.objects.filter(phone__startswith='189').values('author__book__name','author__book__publish__name')
# print(res)

# SELECT `app01_book`.`name`, `app01_publish`.`name` FROM `app01_author` INNER JOIN `app01_authordetail` ON (`app01_author`.`author_detail_id` = `app01_authordetail`.`id`) LEFT OUTER JOIN `app01_book_authors` ON (`app01_author`.`id` = `app01_book_authors`.`author_id`) LEFT OUTER JOIN `app01_book` ON (`app01_book_authors`.`book_id` = `app01_book`.`id`) LEFT OUTER JOIN `app01_publish` ON (`app01_book`.`publish_id` = `app01_publish`.`id`) WHERE `app01_authordetail`.`phone` LIKE '189%' ;
res=models.Author.objects.filter(author_detail__phone__startswith='189').values('book__name','book__publish__name')
print(res)

标签:__,进阶,res,publish,查询,跨表,book,app01,name
From: https://www.cnblogs.com/97zs/p/17865564.html

相关文章

  • Pandas数据框操作进阶
    Pandas为Python营造了一个高水平的操作环境,还提供了便于操作的数据结构和分析工具。无需更多介绍,Pandas已经是Python中数据分析的常用工具了。作为一个数据科学家,Pandas是我日常使用的工具,我总会惊叹于它强大的功能,并且极大提升了工作效率的Pandas技巧。对于pandas新手而言,Pandas......
  • 记录一次MySQL多表查询,order by不走索引的情况.
    首先是表结构,部分字段脱敏已删除 CREATETABLE`log_device_heart`(`id`intunsignedNOTNULLAUTO_INCREMENT,`device_number`varchar(255)CHARACTERSETutf8mb4COLLATEutf8mb4_0900_ai_ciNOTNULL,`time_periods_begin`datetimeNOTNULL,`time_peri......
  • 查询sqlserver中的慢sql
    1SELECT2a.session_id,3a.client_net_address,4(total_elapsed_time/execution_count)/1000N'平均时间ms',5total_elapsed_time/1000N'总花费时间ms',6total_worker_time/1000N'所用的CPU总时间ms',7......
  • SQLSERVR 查询包含某个字符的存储/视图/表
    selectnamefromsysobjectso,syscommentsswhereo.id=s.idandtextlike'%是否生成SN%'ando.xtype='P'--查询特定的表(字段或者文字)在哪些存储过程中被使用SELECTDISTINCTOBJECT_NAME(id)--,textFROMsyscommentsWHEREidIN(SELECTidFROMsysobjectsWHEREt......
  • influxdb 连续查询使用总结
    转载请注明出处:1.定义:InfluxDB连续查询(ContinuousQuery)是一种自动化查询类型,该查询会根据定义的时间间隔定期运行,并将结果存储在新的目标测量中。这样的查询通常用于处理大量时间序列数据。2.基本语法使用语法格式:CREATECONTINUOUSQUERY<cq_name>ON<db_name>BEGIN......
  • elasticsearch在Java中查询指定列的方法
     背景ES在查询时如果数量太多,而每行记录包含的字段很多,那就会导致超出ES的查询上线,默认是100MB,但是很多场景下我们只需要返回特定的字段即可,那么如何操作呢。主要代码@AutowiredprivateRestHighLevelClientclient;publicList<Map<String,Object>>search(Stringindex){......
  • 分页查询在某些场景下引发的数据漏处理问题
    背景问题描述假设有一个表字段statues,我们分页获取数据。status初始状态为1,我们分批获取数据,每一批获取1000,对数据进行处理,如果处理成功就更新status为2,否则不更新。注意事项:分页循环查询满足条件的数据然后进行处理,通过PageHelper或者直接使用“limitstatIndex,pageSize”来分页......
  • SpringMVC_2023_11_28_3 SpringMVC_进阶(文件的上传--idea的配置)
    SpringMVC_进阶(文件的上传--idea的配置)项目结构......
  • 网站SEO进阶指南:如何用Python爬虫进行网页结构优化
    前段时间一个做网络优化的朋友找我,问我能不能通过爬虫的手段对他们自己的网络进行优化。这个看着着实比较新颖,对于从事爬虫行业的程序员来说,很有挑战性,值得尝试尝试。说白了使用爬虫进行网站优化需要对网站的结构、内容、链接等进行全面的分析和优化,以提高网站在搜索引擎中的排名和......
  • RestClient查询文档
    前面我们已经实现利用DSL实现文档查询和后续结果处理,下面我们利用Java RestClient实现前面的功能一、快速入门1.1.基本案例演示我们通过match_all来演示下基本的APl,先看请求DSL的组织:查询所有的信息如下:@SpringBootTestpublicclassHotelSearchTests{//创建成员变量,保存......