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 和 Training 表都有 id 列
================================================== ==========
誰能解決?
uj5u.com熱心網友回復:
使用training_detail. training_id_p視圖定義中的列而不是training. id. 前者是外鍵并且具有不同的底層名稱,如果那是混淆推進的原因。
2個額外的建議:
您的 where 子句沒有任何意義
training_detail。id欄位我希望是training_detail表的 pk,表training_detail位于左連接的左側。因此,此列在此查詢中不能為空。我希望該
training表位于外部聯接的左側,因為它是父表。你應該對training_detail.training_id_p防止它指向無效的培訓記錄。該欄位可能可以為空,但沒有訓練的訓練 detsil 沒有任何意義。
uj5u.com熱心網友回復:
在以下行中:
左連接training (( training. id= training_detail. training_id_p))
“training_detail.training_id_p”是什么意思。
在training_detail表中,列的名稱是id
你提到過:選擇training_detail。id作為id
所以在這里您更改了列的名稱。
為什么?
使用相同的名稱。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/402233.html
上一篇:在json列中查找字串
