Select 来自不同表的字段
Select the fields from different tables
我需要 select 来自不同数据库的不同字段。其中一个字段是 selecting 来自不同表的 LastUpdateOn 日期时间字段的最大值。
{Project}、{Document}、{Instruction}、{Document}、{User}、{ProjectParticipant} 是不同的表
SELECT {Project}.[Number],{Project}.[Name],{User}.[Last_Login],{A}.[max_LastUpdatedOn]
From {Project}
INNER JOIN {ProjectParticipant} ON {Project}.[Id] = {ProjectParticipant}.[ProjectId]
INNER JOIN {User} ON {ProjectParticipant}.[UserId] = {User}.[Id] AND {User}.[Username] = @UserId
INNER JOIN {Document} ON {Project}.[Id] = {Document}.[ProjectId]
INNER JOIN {InstructionType} ON {Project}.[Id] = {Instruction}.[ProjectId]
INNER JOIN {Question} ON {Project}.[Id] = {Question}.[ProjectId]
SELECT MAX(LastUpdatedOn) AS max_LastUpdatedOn
FROM
(
SELECT LastUpdatedOn FROM {Question}
UNION ALL
SELECT LastUpdatedOn FROM {Document}
UNION ALL
SELECT LastUpdatedOn FROM {Instruction}
) A;
GROUP BY {Project}.[Number],
{Project}.[Name],
{User}.[Last_Login]
{A}.[max_LastUpdatedOn]
ORDER BY {Project}.[Number]
但是收到一条错误消息,指出 {A} 是一个未知实体。我不确定这里出了什么问题。
尝试使用
SELECT {Project}.[Number],{Project}.[Name],{User}.[Last_Login],
(SELECT MAX(LastUpdatedOn) as max_LastUpdatedOn
FROM
(
SELECT {Question}.[LastUpdatedOn] where {Project}.[Id] = {Question}.[ProjectId]
UNION ALL
Select {Document}.[LastUpdatedOn] where {Project}.[Id] = {Document}.[ProjectId]
UNION ALL
SELECT {Instruction}.[LastUpdatedOn] where {Project}.[Id] = {Instruction}.[ProjectId]
)
A ) [max_LastUpdatedOn]
FROM {Project}
INNER JOIN {ProjectParticipant} ON {Project}.[Id] = {ProjectParticipant}.[ProjectId]
INNER JOIN {User} ON ({ProjectParticipant}.[UserId] = {User}.[Id] AND {User}.[Username] = @UserId)
INNER JOIN {Question} ON {Project}.[Id] = {Question}.[ProjectId]
INNER JOIN {Document} ON {Project}.[Id] = {Document}.[ProjectId]
INNER JOIN {Instruction} ON {Project}.[Id] = {Instruction}.[ProjectId]
GROUP BY {Project}.[Number],
{Project}.[Name],
{User}.[Last_Login],
A.[max_LastUpdatedOn]
ORDER BY {Project}.[Number]
收到类似 The multi-part identifier "A.max_LastUpdatedOn" could not be bound 的错误。
{A}
不是 OutSystems 实体,因此您不应使用大括号来引用它。大括号用于从设计时的 元模型 名称转换为数据库中的 物理 table 名称。
由于 A
是内部 select 语句的简单别名,因此只需使用 A
就足以使其工作。例如:
SELECT {Project}.[Number],{Project}.[Name],{User}.[Last_Login],A.[max_LastUpdatedOn]
更新
关于 The multi-part identifier could not be bound
的错误,它与按不在查询的 from
/join
来源中的内容分组有关。
我还没有尝试过下面的这段代码,但像这样的代码应该可以解决问题:
(另外,请在此处查看有关如何 select SQL MAX of multiple columns? 的更多方法)
SELECT {Project}.[Number], {Project}.[Name], {User}.[Last_Login],
CASE
WHEN {Question}.[LastUpdatedOn] >= {Document}.[LastUpdatedOn] AND {Question}.[LastUpdatedOn] >= {Instruction}.[LastUpdatedOn]
THEN {Question}.[LastUpdatedOn]
WHEN {Document}.[LastUpdatedOn] >= {Instruction}.[LastUpdatedOn] THEN {Document}.[LastUpdatedOn]
ELSE {Instruction}.[LastUpdatedOn]
END AS max_LastUpdatedOn
FROM {Project}
INNER JOIN {ProjectParticipant} ON {Project}.[Id] = {ProjectParticipant}.[ProjectId]
INNER JOIN {User} ON ({ProjectParticipant}.[UserId] = {User}.[Id] AND {User}.[Username] = @UserId)
INNER JOIN {Question} ON {Project}.[Id] = {Question}.[ProjectId]
INNER JOIN {Document} ON {Project}.[Id] = {Document}.[ProjectId]
INNER JOIN {Instruction} ON {Project}.[Id] = {Instruction}.[ProjectId]
GROUP BY {Project}.[Number],
{Project}.[Name],
{User}.[Last_Login]
ORDER BY {Project}.[Number]
我需要 select 来自不同数据库的不同字段。其中一个字段是 selecting 来自不同表的 LastUpdateOn 日期时间字段的最大值。
{Project}、{Document}、{Instruction}、{Document}、{User}、{ProjectParticipant} 是不同的表
SELECT {Project}.[Number],{Project}.[Name],{User}.[Last_Login],{A}.[max_LastUpdatedOn]
From {Project}
INNER JOIN {ProjectParticipant} ON {Project}.[Id] = {ProjectParticipant}.[ProjectId]
INNER JOIN {User} ON {ProjectParticipant}.[UserId] = {User}.[Id] AND {User}.[Username] = @UserId
INNER JOIN {Document} ON {Project}.[Id] = {Document}.[ProjectId]
INNER JOIN {InstructionType} ON {Project}.[Id] = {Instruction}.[ProjectId]
INNER JOIN {Question} ON {Project}.[Id] = {Question}.[ProjectId]
SELECT MAX(LastUpdatedOn) AS max_LastUpdatedOn
FROM
(
SELECT LastUpdatedOn FROM {Question}
UNION ALL
SELECT LastUpdatedOn FROM {Document}
UNION ALL
SELECT LastUpdatedOn FROM {Instruction}
) A;
GROUP BY {Project}.[Number],
{Project}.[Name],
{User}.[Last_Login]
{A}.[max_LastUpdatedOn]
ORDER BY {Project}.[Number]
但是收到一条错误消息,指出 {A} 是一个未知实体。我不确定这里出了什么问题。 尝试使用
SELECT {Project}.[Number],{Project}.[Name],{User}.[Last_Login],
(SELECT MAX(LastUpdatedOn) as max_LastUpdatedOn
FROM
(
SELECT {Question}.[LastUpdatedOn] where {Project}.[Id] = {Question}.[ProjectId]
UNION ALL
Select {Document}.[LastUpdatedOn] where {Project}.[Id] = {Document}.[ProjectId]
UNION ALL
SELECT {Instruction}.[LastUpdatedOn] where {Project}.[Id] = {Instruction}.[ProjectId]
)
A ) [max_LastUpdatedOn]
FROM {Project}
INNER JOIN {ProjectParticipant} ON {Project}.[Id] = {ProjectParticipant}.[ProjectId]
INNER JOIN {User} ON ({ProjectParticipant}.[UserId] = {User}.[Id] AND {User}.[Username] = @UserId)
INNER JOIN {Question} ON {Project}.[Id] = {Question}.[ProjectId]
INNER JOIN {Document} ON {Project}.[Id] = {Document}.[ProjectId]
INNER JOIN {Instruction} ON {Project}.[Id] = {Instruction}.[ProjectId]
GROUP BY {Project}.[Number],
{Project}.[Name],
{User}.[Last_Login],
A.[max_LastUpdatedOn]
ORDER BY {Project}.[Number]
收到类似 The multi-part identifier "A.max_LastUpdatedOn" could not be bound 的错误。
{A}
不是 OutSystems 实体,因此您不应使用大括号来引用它。大括号用于从设计时的 元模型 名称转换为数据库中的 物理 table 名称。
由于 A
是内部 select 语句的简单别名,因此只需使用 A
就足以使其工作。例如:
SELECT {Project}.[Number],{Project}.[Name],{User}.[Last_Login],A.[max_LastUpdatedOn]
更新
关于 The multi-part identifier could not be bound
的错误,它与按不在查询的 from
/join
来源中的内容分组有关。
我还没有尝试过下面的这段代码,但像这样的代码应该可以解决问题:
(另外,请在此处查看有关如何 select SQL MAX of multiple columns? 的更多方法)
SELECT {Project}.[Number], {Project}.[Name], {User}.[Last_Login],
CASE
WHEN {Question}.[LastUpdatedOn] >= {Document}.[LastUpdatedOn] AND {Question}.[LastUpdatedOn] >= {Instruction}.[LastUpdatedOn]
THEN {Question}.[LastUpdatedOn]
WHEN {Document}.[LastUpdatedOn] >= {Instruction}.[LastUpdatedOn] THEN {Document}.[LastUpdatedOn]
ELSE {Instruction}.[LastUpdatedOn]
END AS max_LastUpdatedOn
FROM {Project}
INNER JOIN {ProjectParticipant} ON {Project}.[Id] = {ProjectParticipant}.[ProjectId]
INNER JOIN {User} ON ({ProjectParticipant}.[UserId] = {User}.[Id] AND {User}.[Username] = @UserId)
INNER JOIN {Question} ON {Project}.[Id] = {Question}.[ProjectId]
INNER JOIN {Document} ON {Project}.[Id] = {Document}.[ProjectId]
INNER JOIN {Instruction} ON {Project}.[Id] = {Instruction}.[ProjectId]
GROUP BY {Project}.[Number],
{Project}.[Name],
{User}.[Last_Login]
ORDER BY {Project}.[Number]