连接有或没有记录的表

时间:2013-08-16 10:40:18

标签: sql postgresql postgresql-9.0

我有两个表格,例如unitsprice。单位表字段为unit1unit2Price表格字段为idrateperprice。现在我想连接这两个表,如Pricerateper <=0Price table is empty,然后返回unit1其他rateper。我写了下面的查询,但没有下载

 select case when rateper <=0  then unit1 else rateper from units,price

正在使用postgresql版本9.0

单位表

+------+-----+
|Unit1 |Unit2|
--------------
| 2    | 10  |
| 1    | 20  |
+------+------

价格表

+------+-------------+---------+
|id    + rate per    + price   |
--------------------------------
|1     |0            | 100     |
|2     |1            | 200     |
|3     |2            | 300     |
--------------------------------

Result :

2
1
3

如果Price表没有行,则显示Result

2
1

1 个答案:

答案 0 :(得分:0)

您必须指定要加入这些表的列

select
    case
        when p.rateper <= 0 or p.rateper is null then u.unit1
        else p.rateper
    end
from units as u
    full outer join price as p on p.id = u.???

更新我认为你需要某种全外连接。我仍然不完全明白你想要什么,但试试这个问题:

select
    coalesce(u."Unit1", p."id")
from Units as u
    full outer join (select * from price where "rate per" > 0) as p on p."id" = u."Unit1";

sql fiddle demo