我对使用子查询非常陌生。运行以下查询时,列t_num和timestamp为NULL,而在各自的表中这些列具有值。
表trans包含多个p_num,trans_amt,trans_balance。我只想获取2017年7月31日之前和之前发生的交易。
select
p.p_number,
p.name,
t.t_num,
t.timestamp
from payers p
left join (
select p_number, t_num, timestamp from trans a
where a.timestamp <= '31-JUL-2017' and rownum = 1
order by a.timestamp desc
) t on t.p_number = p.p_number
where p.p_number in(44545558, 44545559, 44545560, 44545561, 44545562)
结果
我尝试仅运行查询的这一部分,并且可以看到t_num和timestamp列的值。
select p_number, t_num, timestamp from trans a
where a.timestamp <= '31-JUL-2017' and rownum = 1
order by a.timestamp desc
答案 0 :(得分:4)
您的查询首先对子查询中的数据进行排序,并首先获取不正确的<?php $getproject['p_id'] == $this->getdocs[0]['fk_project_id'] ? ' selected="selected"' : ''; ?>
。在此类查询中使用<?php echo ( ($getproject['p_id'] == $this->getdocs[0]['fk_project_id']) ? ' selected="selected"' : ''); ?>
更好,更安全:
p_number