psql外键并通过它连接表
psql foreign key and join tables by it
我有 3 张桌子:
pet:
id | ...
vaccination:
id | petId | ...
visit:
id | petId | ...
在 vaccination
和 visit
表中 petId
是外键。
当我尝试join
时出现错误
select
COALESCE(visit.petId, vaccination.petId) as petId,
GREATEST(visit.date, vaccination.date) as date
from visit
FULL JOIN vaccination on vaccination.petId = visit.petId
或
(select petId from vaccination)
union all
(select petId from visit)
错误是:
column "petid" doesn't exist
Hint: Possibly a column reference was intended on "vaccination.petId"
我知道它是由外键生成的某种 'virtual' 列。
但我不知道如何加入它。
感谢帮助!
P.S。此表由 typeorm
生成
列、方案和 table 名称区分大小写,当您没有引号时,PostgreSQL 将使用您键入内容的小写版本。
所以使用“petId”、visit.“petId”和vaccination.“petId”来防止意外的小写。
您甚至可以决定始终将列、方案和 table 名称放在引号中,这样您就不会被这个问题搞砸了。例如“疫苗接种”。“petId”
我有 3 张桌子:
pet:
id | ...
vaccination:
id | petId | ...
visit:
id | petId | ...
在 vaccination
和 visit
表中 petId
是外键。
当我尝试join
时出现错误
select
COALESCE(visit.petId, vaccination.petId) as petId,
GREATEST(visit.date, vaccination.date) as date
from visit
FULL JOIN vaccination on vaccination.petId = visit.petId
或
(select petId from vaccination)
union all
(select petId from visit)
错误是:
column "petid" doesn't exist
Hint: Possibly a column reference was intended on "vaccination.petId"
我知道它是由外键生成的某种 'virtual' 列。 但我不知道如何加入它。 感谢帮助! P.S。此表由 typeorm
生成列、方案和 table 名称区分大小写,当您没有引号时,PostgreSQL 将使用您键入内容的小写版本。
所以使用“petId”、visit.“petId”和vaccination.“petId”来防止意外的小写。
您甚至可以决定始终将列、方案和 table 名称放在引号中,这样您就不会被这个问题搞砸了。例如“疫苗接种”。“petId”