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对象时,我得到了这一进展。
Column "id" declared twice in table "trainingdetail"Training_detail和培训表都有id列。
===========================================================
谁能解决呢?
发布于 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
在这里,您更改了列的名称。
为什么?
用同样的名字。
发布于 2022-01-02 08:17:42
在视图定义中使用training_detail.training_id_p列而不是training.id。前者是外键,具有不同的底层名称,如果这就是混淆推进的地方。
2项补充建议:
training_detail没有任何意义。training_detail表的pk,training_detail表位于左联接的左侧。因此,此列在此查询中不能为空。training表在外部连接的左侧,因为它是父表。您应该在training_detail.training_id_p上有一个fk,防止它指向无效的训练记录。这个字段可能是空的,但是没有训练的训练分离就没有任何意义。https://stackoverflow.com/questions/70554428
复制相似问题