使用带有 ifnull 函数 MySQL

问题描述

我只想用我在最后一个表中显示的结果中的项目表中的名称替换引用 ID

一个表和父表

id item 数量 税金 状态
1 4 20 2 Y
2 5 15 1 N
3 6 5 0 N

第二个表和子表

id item p_id 数量
1 1 1 10 1
2 2 2 10 1
3 3 1 15 1

第三张桌子

id item
1 移动
2 加热器
3 鼠标
4 电子
5 软件
6 论文

我从这段代码中得到了什么

SELECT IFNULL(child.item,parent.item) AS item,IFNULL(child.amount,parent.amount) AS amount,IFNULL(child.tax,parent.tax) AS tax
FROM parent
LEFT JOIN child ON parent.id = child.p_id
item 数量
1 10 1
2 10 1
3 15 1
5 15 1
6 5 0

我想要的是

item 数量
手机 10 1
加热器 10 1
鼠标 15 1
软件 15 1
论文 5 0

请帮我实现这个

解决方法

只需使用您已在查询中显示的商品 ID 加入商品表:

SELECT
  i.item,COALESCE(c.amount,p.amount) AS amount,COALESCE(c.tax,p.tax) AS tax
FROM parent p
LEFT JOIN child c ON c.p_id = p.id
JOIN item i ON i.id = COALESCE(c.item,p.item)
ORDER BY i.item;

(我使用 COALESCE 而不是 IFNULL,因为这是标准 SQL。但是如果您更喜欢 IFNULL,您可以坚持使用它。)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...