使用带 ifnull 函数的联合语句 MySQL
Using joint statement with ifnull function MySQL
我只想在结果中用项目 table 中的名称替换引用 ID,正如我在上次 table
中显示的那样
第一 table 和 Parent table
id
item
amount
tax
status
1
4
20
2
Y
2
5
15
1
N
3
6
5
0
N
第二 table 和 child table
id
item
p_id
amount
tax
1
1
1
10
1
2
2
2
10
1
3
3
1
15
1
第三table
id
item
1
mobile
2
heater
3
mouse
4
electronic
5
software
6
papers
我从这段代码中得到了什么
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
amount
tax
1
10
1
2
10
1
3
15
1
5
15
1
6
5
0
我要的是
item
amount
tax
mobile
10
1
heater
10
1
mouse
15
1
software
15
1
papers
5
0
请帮我实现这个
只需使用您已在查询中显示的商品 ID 加入商品 table:
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
。)
我只想在结果中用项目 table 中的名称替换引用 ID,正如我在上次 table
中显示的那样第一 table 和 Parent table
id | item | amount | tax | status |
---|---|---|---|---|
1 | 4 | 20 | 2 | Y |
2 | 5 | 15 | 1 | N |
3 | 6 | 5 | 0 | N |
第二 table 和 child table
id | item | p_id | amount | tax |
---|---|---|---|---|
1 | 1 | 1 | 10 | 1 |
2 | 2 | 2 | 10 | 1 |
3 | 3 | 1 | 15 | 1 |
第三table
id | item |
---|---|
1 | mobile |
2 | heater |
3 | mouse |
4 | electronic |
5 | software |
6 | papers |
我从这段代码中得到了什么
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 | amount | tax |
---|---|---|
1 | 10 | 1 |
2 | 10 | 1 |
3 | 15 | 1 |
5 | 15 | 1 |
6 | 5 | 0 |
我要的是
item | amount | tax |
---|---|---|
mobile | 10 | 1 |
heater | 10 | 1 |
mouse | 15 | 1 |
software | 15 | 1 |
papers | 5 | 0 |
请帮我实现这个
只需使用您已在查询中显示的商品 ID 加入商品 table:
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
。)