首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我的Sql左联接中有奇怪的列名重复问题。

我的Sql左联接中有奇怪的列名重复问题。
EN

Stack Overflow用户
提问于 2022-01-02 07:56:33
回答 2查看 69关注 0票数 0
代码语言:javascript
运行
复制
CREATE VIEW `trainingdetail` AS 
select `training_detail`.`id` as `id`
  ,`training`.`id` AS `training_id`
  ,`training`.`startdate` AS `startdate`
  ,`training`.`enddate` AS `enddate`
  ,concat(`training_detail`.`fname`,' ',`training_detail`.`lname`) AS `fullname` 
from `training_detail`  
 left join `training`  on ((`training`.`id`=`training_detail`.`training_id_p`))
where `training_detail`.`id` is NOT NULL 

我可以创建这个视图没有问题。但是当我试图转换到ORM对象时,我得到了这一进展。

代码语言:javascript
运行
复制
 Column "id" declared twice in table "trainingdetail"

Training_detail和培训表都有id列。

===========================================================

谁能解决呢?

EN

回答 2

Stack Overflow用户

发布于 2022-01-02 11:19:18

在以下一行:

在((training.id=training_detail.training_id_p))上左加入training

"training_detail.training_id_p“是什么意思?

在training_detail的表中,列名为id

您提到过:选择training_detail.id作为id

在这里,您更改了列的名称。

为什么?

用同样的名字。

票数 1
EN

Stack Overflow用户

发布于 2022-01-02 08:17:42

在视图定义中使用training_detail.training_id_p列而不是training.id。前者是外键,具有不同的底层名称,如果这就是混淆推进的地方。

2项补充建议:

  1. Your where子句作为training_detail没有任何意义。
  2. 字段我希望成为training_detail表的pk,training_detail表位于左联接的左侧。因此,此列在此查询中不能为空。

  1. ,我希望training表在外部连接的左侧,因为它是父表。您应该在training_detail.training_id_p上有一个fk,防止它指向无效的训练记录。这个字段可能是空的,但是没有训练的训练分离就没有任何意义。
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70554428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档