0

我有三张桌子

1- 销售

Id    Unit    Ref
 1    200    RM-S-2002
 2    300    RM-S-2003

2- 租金

Id     Unit    Ref
 1      400    RM-R-2009
 2      100    RM-R-2010

两个表的字段结构相同,在 Ref 中间 S 代表 Sale 表,R 代表 Rent 表

3- 细节

Id      List_Ref 
1        RM-R-2010
2        RM-S-2002
3        RM-S-2003

详细信息表包含两个表(租金和销售)的参考。现在我想选择单位,如果

如果 Details.List_ref=Rent.Ref 然后选择 Rent.Unit 否则选择 Sale.Unit。

这里的条件出现在选择之前......如何在查询中使用它?

4

2 回答 2

1
SELECT
  IF(d.List_Ref LIKE '%-S-%', 'Sale', 'Rent') AS Type,
  IF(d.List_Ref LIKE '%-S-%', s.Unit, r.Unit) AS Unit
FROM Details d
  LEFT JOIN Sale s
    ON d.List_Ref = s.Ref
  LEFT JOIN Rent r
    ON d.List_Ref = r.Ref;

演示

输出

| TYPE | UNIT |
---------------
| Rent |  100 |
| Sale |  200 |
| Sale |  300 |
于 2013-07-22T06:43:49.880 回答
0

尝试

SELECT d.id, d.list_ref, COALESCE(s.unit, r.unit) unit
  FROM Details d LEFT JOIN Sale s 
    ON d.list_ref = s.ref LEFT JOIN Rent r
    ON d.list_ref = r.ref 

样本输出:

| 身份证 | LIST_REF | 单位 |
-------------------------
| 1 | RM-R-2010 | 100 |
| 2 | RM-S-2002 | 200 |
| 3 | RM-S-2003 | 300 |

这是SQLFiddle演示

于 2013-07-22T06:43:44.997 回答