1

我有三个表:person、sav_account 和 cur_account。我正在尝试编写一个查询,该查询将从任一表中为所有人选择金额。如果在两个表中都找到了数量,我不会尝试添加值。

架构如下:

Person
-------
ID      |NAME       |AGE
1       |ICHIGO     |25
2       |NAMI       |21
3       |LUFFY      |18

SAV_ACCOUNT
-----------

ID      |AMOUNT
1       |10000
3       |20


CUR_ACCOUNT
-----------

ID      |AMOUNT
2       |100000000

我写了这个查询,但它给了我一个空集

select * from person p 
    inner join sav_account sa on (p.id = sa.id)
    inner join cur_account ca on (p.id = ca.id)

使用此查询,我没有得到正确的数据。

select * from person p, sav_account sa, cur_account ca 
where p.id = sa.id OR p.id = ca.id

我试图得到这样的最终数据:

ID      |NAME       |AGE        |AMOUNT
1       |ICHIGO     |25         |10000
3       |LUFFY      |18         |20 
2       |NAMI       |21         |1000000

请指教。

4

1 回答 1

1

你需要使用OUTER JOIN.

SELECT  a.ID, a.Name, a.Age,
        COALESCE(b.Amount, c.Amount, 0) Amount
FROM    Person a
        LEFT JOIN Sav_Account b
            ON a.ID = b.ID
        LEFT JOIN Cur_Account c
            ON a.ID = c.ID

后续问题:一个人是否有可能在两个表中都有数量?如果是这样,你会得到什么价值?

于 2013-10-31T11:23:00.820 回答