Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql中,根据条件从三个表中选择_Mysql_Select_Join - Fatal编程技术网

在mysql中,根据条件从三个表中选择

在mysql中,根据条件从三个表中选择,mysql,select,join,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

我有三张桌子

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
明细表包含两个表(租金和销售)的ref。现在,如果需要,我想选择unit

如果Details.List_ref=Rent.ref,则选择Rent.Unit,否则选择Sale.Unit

在选择…如何在查询中使用此条件之前出现此条件?

请尝试

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 | |ID |列表|参考|单元| ------------------------- |1 | RM-R-2010 | 100| |2 | RM-S-2002 | 200| |3 | RM-S-2003 | 300| 这里是演示

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 |