我对Oracle SQL很陌生,所以如果我的问题实际上有一个相对小学生的答案,请原谅。
所以我有2个表,Apps和Apps_history以及下面的定义。
Service Temporarily Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
Apache/2.2.15 (Red Hat) Server at myapp-mydomain.rhcloud.com Port 80
Apps_history有app_id,它是Apps中主键ID的外键,应用中的记录经常更新,Apps_history会跟踪这一点。我想要一个新列来显示应用程序中的ID何时被创建,这可以从状态等于'initialized'时在Apps_History中的date_modified列中派生。
目前这就是我所拥有的
Apps Apps_history
ID ID
Other APP_ID
DATE_MODIFIED STATUS
DATE_MODIFIED
但是我遇到了一些错误,非常感谢任何帮助推动我朝着正确方向前进的方法,
由于
答案 0 :(得分:1)
有多种方法可以实现这一目标。你似乎已经开始了相关子查询的道路,所以继续这样:
select a.*,
(select ah.date_modified
from app_history ah
where a.id = ah.app_id and ah.status = 'initialized')
) as created_date
from apps a;
为了提高性能,我建议在app_history(app_id, status, date_modified)
上建一个索引。
答案 1 :(得分:0)
您的子查询不相关。您可以使用@Gordon建议的相关查询来解决此问题。此外,如果从相关子查询中获取多行但是可修复,则会抛出错误。
我会使用左自联接。
select a.*,
t.date_modified as create_date
from apps a
left join apps t on a.id = t.app_id
and t.status = 'initialized';