sql - 我想要三个表的左外连接
问题描述
我想做一个基于“PMP_MODEL”的“左外连接”,如下面的 SQL 查询所示。
SELECT *
FROM PMP_MODEL A
LEFT OUTER JOIN PMP_REPAIR_HISTORY B ON A.PMP_MANU_NUM = B.PMP_MANU_NUM
LEFT OUTER JOIN SITE_INFO C ON A.PMP_MANU_NUM = C.PMP_MANU_NUM
LEFT OUTER JOIN SITE_DETAIL_INFO D ON A.PMP_MANU_NUM = D.PMP_MANU_NUM
WHERE A.PMP_MANU_NUM = ?
Django 模型.py
class PmpModel(models.Model):
pmp_manu_num = models.CharField(db_column='PMP_MANU_NUM', primary_key=True, max_length=50, db_collation='utf8_general_ci') # Field name made lowercase.
pmp_model_nm = models.CharField(db_column='PMP_MODEL_NM', max_length=50, db_collation='utf8_general_ci', blank=True, null=True) # Field name made lowercase.
#~~~ many column
class PmpRepairHistory(models.Model):
pmp_num = models.ForeignKey(PmpModel , on_delete = models.SET_NULL, null=True, db_column='pmp_manu_num' ,related_name='pmp_history')
pmp_manu_num = models.CharField(db_column='PMP_MANU_NUM', primary_key=True, max_length=50, db_collation='utf8_general_ci') # Field name made lowercase.
#~~~ many column
class SiteDetailInfo(models.Model):
pmp_manu_num = models.CharField(db_column='PMP_MANU_NUM', max_length=50, db_collation='utf8_general_ci') # Field name made lowercase.
#~~~ many column
class SiteInfo(models.Model):
pmp_manu_num = models.CharField(db_column='PMP_MANU_NUM', max_length=50, db_collation='utf8_general_ci') # Field name made lowercase.
#~~~ many column
我尝试使用“select_related”,但它不起作用。
class PmpModelList(APIView):
def get(self, request, format = None):
pmpList = PmpModel.objects.select_related('pmp_manu_num')
serialize = PmpModelSerializer(pmpList, many = True)
return Response(serialize.data)
解决方案
推荐阅读
- node.js - NodeJS,Mongooose - 使用正则表达式查找不返回任何内容
- python - bs4按出现顺序抓取不同的标签
- xml-parsing - oracle表中的嵌套xml解析
- python - 如何使用 pandas 在我的最终 df 中添加月年列并对其进行排序?
- android - Android Studio Pull刷新recyclerview动画不起作用
- c# - 理解功能和需求 pascal & C#
- vue.js - Vuetify 1.5.x v-select 下拉样式
- c++ - 为什么这个在末尾插入节点的链表程序没有给出任何输出?
- c# - 使用 REST API 在 Azure DevOps 中创建工作项 - 未找到状态 404
- python - 如何更改 X 轴上显示的内容