misuk11
08-10-2005, 12:04 PM
Im in the process of migrating from sybase to oracle and am trying to convert the query below (which works ok in its original form in sybase)
SELECT TO_NUMBER(sb.ss_box_cod) AS "id",
(sb.ss_box_time_start_num/1000)*300 AS "txs_time",
(sb.ss_box_time_start_num/1000)*300 AS "sched_time",
((sb.ss_box_time_end_num - sb.ss_box_time_start_num)/1000)*300 AS "slot_duration",
sb.ss_box_nam AS "title",
t.ctr_contrt_num,
p.ctr_key AS "series_id",
p.prg_auk AS "programme_id",
t.prg_prog_num,
svc.service_id,
svc.schedule_class_id,
t.transhist_sched_dtm AS "txs_date",
NVL(tx.id, -1) AS "billings_id",
NVL(tx.billings_title, sb.ss_box_nam) AS "billings_title",
NVL(tx.passed_flag, 'N') AS "billings_passed_flag",
NVL(tx.changed_flag, 'N') AS "changed_flag",
NVL(tx.time_changed_flag, 'N') AS "time_flag",
NVL(tx.billings_time, (sb.ss_box_time_start_num/1000)*300) AS "bill_time",
NVL(tx.exclude_flag, 'N') AS "exclude_flag",
0 AS "billings_level",
0 AS "bill_type",
1 AS "update_id",
'N' AS "update_flag",
NVL(tx.group_flag, 'N') AS "group_flag"
FROM service_classes svc,
channel c,
transhist t,
aitprg ap,
prg p,
ss_box sb,
txs_billings_dets tx
WHERE svc.service_id = 1
AND svc.schedule_class_id = 1
AND svc.channel_key = c.channel_key
AND t.transhist_sched_dtm = TO_DATE('25 JAN 2005')
AND t.transhist_channel_cli_key = svc.channel_key
AND sb.transhist_key = t.transhist_key
AND t.transhist_tx_cod = c.channel_tx_cod
AND sb.ss_box_visible_flg = 1
AND sb.ss_box_current_flg = 1
AND sb.ss_box_cod = tx.ss_box_cod(+)
AND svc.service_id = tx.service_id(+)
AND t.transhist_sched_dtm = tx.txs_date(+)
AND t.ait_key = ap.ait_key(+)
AND t.prg_prog_num = ap.prg_prog_num(+)
AND ap.ctr_key = p.ctr_key(+)
AND ap.prg_prog_num = p.prg_prog_num(+)
Im getting an error saying
'a table may be outer joined to at most one other table'
can anyone tell me what Im doing wrong here ?
tia
SELECT TO_NUMBER(sb.ss_box_cod) AS "id",
(sb.ss_box_time_start_num/1000)*300 AS "txs_time",
(sb.ss_box_time_start_num/1000)*300 AS "sched_time",
((sb.ss_box_time_end_num - sb.ss_box_time_start_num)/1000)*300 AS "slot_duration",
sb.ss_box_nam AS "title",
t.ctr_contrt_num,
p.ctr_key AS "series_id",
p.prg_auk AS "programme_id",
t.prg_prog_num,
svc.service_id,
svc.schedule_class_id,
t.transhist_sched_dtm AS "txs_date",
NVL(tx.id, -1) AS "billings_id",
NVL(tx.billings_title, sb.ss_box_nam) AS "billings_title",
NVL(tx.passed_flag, 'N') AS "billings_passed_flag",
NVL(tx.changed_flag, 'N') AS "changed_flag",
NVL(tx.time_changed_flag, 'N') AS "time_flag",
NVL(tx.billings_time, (sb.ss_box_time_start_num/1000)*300) AS "bill_time",
NVL(tx.exclude_flag, 'N') AS "exclude_flag",
0 AS "billings_level",
0 AS "bill_type",
1 AS "update_id",
'N' AS "update_flag",
NVL(tx.group_flag, 'N') AS "group_flag"
FROM service_classes svc,
channel c,
transhist t,
aitprg ap,
prg p,
ss_box sb,
txs_billings_dets tx
WHERE svc.service_id = 1
AND svc.schedule_class_id = 1
AND svc.channel_key = c.channel_key
AND t.transhist_sched_dtm = TO_DATE('25 JAN 2005')
AND t.transhist_channel_cli_key = svc.channel_key
AND sb.transhist_key = t.transhist_key
AND t.transhist_tx_cod = c.channel_tx_cod
AND sb.ss_box_visible_flg = 1
AND sb.ss_box_current_flg = 1
AND sb.ss_box_cod = tx.ss_box_cod(+)
AND svc.service_id = tx.service_id(+)
AND t.transhist_sched_dtm = tx.txs_date(+)
AND t.ait_key = ap.ait_key(+)
AND t.prg_prog_num = ap.prg_prog_num(+)
AND ap.ctr_key = p.ctr_key(+)
AND ap.prg_prog_num = p.prg_prog_num(+)
Im getting an error saying
'a table may be outer joined to at most one other table'
can anyone tell me what Im doing wrong here ?
tia