前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >树状数据库表查询2次以上(自连接、内连接、别名)方法

树状数据库表查询2次以上(自连接、内连接、别名)方法

作者头像
hotqin888
发布2020-09-10 16:13:05
6120
发布2020-09-10 16:13:05
举报
文章被收录于专栏:hotqin888的专栏hotqin888的专栏

https://blog.csdn.net/qq_15058425/article/details/78506193

https://blog.csdn.net/qq_43998763/article/details/103528559

https://cloud.tencent.com/developer/article/1695472

https://www.cnblogs.com/baiyuhong/p/9753173.html

对于树状结构的数据库表,如何在一个表中查询多次,开始走了不少弯路,比如想尝试用子查询,方向不对。其实就是join查询使用数据库表别名(改变数据表名称)即可。

代码语言:javascript
复制
//价值表带mark分值
type UserMeritTopic2 struct {
	// gorm.Model
	Id         int64  `json:"id"`
	Title      string `json:"title"`
	Title1     string `json:"title1"`     //价值分类名称
	Title2     string `json:"title2"`     //价值分类名称
	Title3     string `json:"title3"`     //价值分类名称
	TopicTitle string `json:"topictitle"` //价值内容名称
	Mark       int    `json:"mark"`
	Content    string `json:"content"`
	User       User
}

//测试查询,希望查询出树状结构表的父子孙
//最后用join查询重命名来解决了。
func GetMeritTopic2(mid, uid int64, state int) (usermerittopics []*UserMeritTopic2, err error) {
	db := GetDB()

	err = db.Table("admin_merit").Select("t2.title as title2,t1.title as title1,admin_merit.title as title,admin_merit_mark.mark as mark,merit_topic.title as topic_title,merit_topic.content as content").
		Where("admin_merit.parent_id=?", mid).
		Joins("INNER JOIN admin_merit AS t1 ON t1.id = admin_merit.parent_id").
		Joins("INNER JOIN admin_merit AS t2 ON t2.id = t1.parent_id").
		Joins("left JOIN merit_topic on merit_topic.merit_id=admin_merit.id").
		Where("merit_topic.user_id = ? AND merit_topic.state=?", uid, state).
		Joins("left JOIN admin_merit_mark on admin_merit_mark.merit_id = merit_topic.merit_id").
		Scan(&usermerittopics).Error
	return usermerittopics, err
}

gorm的查询结果如下: 

代码语言:javascript
复制
[
  {
    "id": 0,
    "title": "大型",
    "title1": "专业负责人",
    "title2": "项目管理类",
    "title3": "",
    "topictitle": "阿斯顿发生发送的",
    "mark": 4,
    "content": "阿斯蒂芬",
  }
]
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档