Mysql SQL:如何将Union all分隔为单独的列?
新用户。所以我正在做一个SQL数据库项目,主题是一个逃生室/餐厅,我有两个独立的桌子,一个叫做配料,另一个叫做资产。 下面是配料表的示例Mysql SQL:如何将Union all分隔为单独的列?,mysql,sql,Mysql,Sql,新用户。所以我正在做一个SQL数据库项目,主题是一个逃生室/餐厅,我有两个独立的桌子,一个叫做配料,另一个叫做资产。 下面是配料表的示例 | ingredients_id | ingredients_name | ingredients_cost | ingredient_stock | ingredient_availability | 1 | Beef Burger | 1.99 | 12 | 1 |
| ingredients_id | ingredients_name | ingredients_cost | ingredient_stock | ingredient_availability
| 1 | Beef Burger | 1.99 | 12 | 1
| 2 | Cheese | 1.99 | 0 | 0
| 3 | Bacon | 1.99 | 43 | 1
这是资产表的一个例子
| asset_id | asset_name | asset_status | asset_availability
| 1 | escape_1 | Clean | 1
| 2 | escape_2 | Clean | 1
| 3 | escape_3 | Clean | 1
我想做的是创建一个组合了这两个元素的表,称为存储(已通过主键/外键拥有该表),我希望它显示为:
| Name | Stock (Ingredients Only) | Availability
| escape_1 | NULL | TRUE
| escape_2 | NULL | TRUE
| escape_3 | NULL | TRUE
| Beef Burger | 12 | TRUE
| Cheese | 0 | FALSE
| Bacon | 43 | TRUE
以下是迄今为止我的SQL代码:
SELECT asset_name AS "Name" FROM escaperoom_assets
UNION ALL
SELECT ingredients_name FROM ingredients
我可以把成分和资产的名称放在一个列表中,但我不能为其他的单独列出来。基本上,我需要它,以便在一列中显示所有资产和成分的列表,检查另一列的库存量(仅针对成分表),以及它们是否可用(标识为真/假或0或1)。只需在每个子查询中添加所需的列:
SELECT asset_name AS Name, NULL as stock, asset_availabilty as availability
FROM escaperoom_assets
UNION ALL
SELECT ingredients_name, ingredient_stock, ingredient_availability
FROM ingredients;
我不确定为什么要将0/1转换为真/假。数字看起来不错,但如果需要,您可以使用条件逻辑将其转换为字符串。好的,由于某些原因,表格格式完全混乱,我也不知道如何修复它。它可以工作!非常感谢你!我将做一些快速更改,以便将1和0替换为真/假,并用适当的名称重命名“股票”和“资产可用性”。无论如何,关于真/假的事情,我这样做看起来更专业一些,因为将信息显示为真或假而不是0/1更合理。@FoxyWoxy0w0。通常在API级别对这些值进行格式化,但您可以轻松地将第三个参数更改为
大小写表达式:(资产可用性时大小写为'TRUE'或'else'假结束)
。