|Subject||RE: [firebird-support] firebird sql alias for condition|
|Author||Svein Erling Tysvær|
>One dataset includes a date + time to switch on and a date + time to switchwith TmpTable(tmp) as
>off. I would like to get the timestamp next time on and next time off. In
>the simplest case both times from one dataset are in the future. Now it can
>be, that the next time to switch on listed in one, the time to switch on in
>with TmpTable(tmp) as
>(select cast(d_ein || ' ' || z_ein as timestamp) as t_ein, cast(d_aus || ' '
>|| z_aus as timestamp) as t_aus from t_zeitschaltuhr
>where d_ein >= current_date or d_aus > current_date and id_zum = 50 and
>id_zue < 8 and aktiv = 1)
>select t_ein from TmpTable
>where t_ein > 'now'
>order by t_ein
>rows 1 /* next time to switch on */
>select t_aus from TmpTable
>where t_aus > 'now'
>order by t_aus
>rows 1 /* next time to switch off */
>How can I read both selects at once?
(select cast(d_ein || ' ' || z_ein as timestamp) as t_ein, cast(d_aus || ' '
|| z_aus as timestamp) as t_aus from t_zeitschaltuhr
where d_ein >= current_date
or (d_aus > current_date
and id_zum = 50
and id_zue < 8
and aktiv = 1)),
(select t_ein from TmpTable
where t_ein > 'now'
order by t_ein
rows 1), /* next time to switch on */
(select t_aus from TmpTable
where t_aus > 'now'
order by t_aus
rows 1) /* next time to switch off */
select te.t_ein, ta.t_aus
from TmpEin te
cross join TmpAus ta
In addition to what you asked, I've added parenthesis. I always prefer using them when having both OR and AND within a WHERE or JOIN clause, since I've been bitten too often by AND having a lower precedence than OR.