在mysql的条件基础上从三个表中选择

时间:2013-07-22 06:36:14

标签: mysql select join

我有三张桌子

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

字段两个表的结构相同,在参考中间S代表销售表,R代表租赁表

3-详情

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

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

如果Details.List_ref = Rent.Ref,则选择Rent.Unit ELSE选择Sale.Unit。

此处条件出现在select ...之前如何在查询中使用?

2 个答案:

答案 0 :(得分: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;

Demo

输出

| TYPE | UNIT |
---------------
| Rent |  100 |
| Sale |  200 |
| Sale |  300 |

答案 1 :(得分: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 

示例输出:

| ID |  LIST_REF | UNIT |
-------------------------
|  1 | RM-R-2010 |  100 |
|  2 | RM-S-2002 |  200 |
|  3 | RM-S-2003 |  300 |

这是 SQLFiddle 演示