选择具有相同ID的多个表

时间:2013-02-27 23:08:36

标签: oracle11g

我需要仅根据一个表从四个表中选择数据。

在我的'计算'表中,我有我需要的所有记录。

但我需要从'程序''术语''导入'表中检索每条记录的其他信息。

'计算'具有来自'计划'的ID

但是,要从'导入'获得记录,我需要加入'item'表,因为'item'包含来自'程序的ID ''导入'

'term'的ID来自'导入'

所以,我试过这个:

select  c.date,
    p.name,
    c.name1,
    c.name2,
    t.date,
    i.version,
    c.price1,
    c.price2,
    c.price3
from calculated c, programs p, term t, imported i, item it
where c.programs_id = p.programs_id
    and c.programs_id = it.programs_id
    and it.imported_id = i.imported_id
    and i.term_id = t.term_id;

但是当我在'计算'上使用count(*)时,我得到了30k的记录,而且从我的select语句中我获得了超过1.3亿条记录。

我做错了什么?

我应该怎样做才能发挥作用?

2 个答案:

答案 0 :(得分:0)

您忘了加入term表。

可能你需要添加

and t.term_id = i.term_id

答案 1 :(得分:0)

如果所有重复行都是等效的,你可以像这样尝试smth

select  c.date,
    p.name,
    c.name1,
    c.name2,
    t.date,
    i.version,
    c.price1,
    c.price2,
    c.price3
from calculated c, programs p, term t, imported i
where c.programs_id = p.programs_id and
(select imported_id from item it where c.programs_id = it.programs_id and rownum = 1) = i.imported_id
and i.term_id = t.term_id;

其中“rownum = 1”是对oracle选择一行的限制。