在mysql中,根据条件从三个表中选择
我有三张桌子 1-出售在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
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 |