mysql - 动态选择列名(基于另一个表行的值)

标签 mysql

我这里有一个有趣的问题,我不确定如果不重构我正在使用的数据库是否可以解决,但是这里...

我有一个查询需要选择以下格式的信息:“SKU”、“产品类别”、“产品子类别”、“手头”、“位置”、“已分配”、“可用”、“本月收到”

除了有点复杂的“接收本月”列外,我的每个列都工作正常。对于此列,我需要使用 SKU 值(称为 fishbowlinventoryavailabilitybylg.part)来获取“发货”表中列的每一行的总和,其中该列与 SKU 同名。
这是一个可能有帮助的示例输出:http://i.imgur.com/rv7lXxJ.png

这是我生成前 7 列的代码:

SELECT
fishbowlinventoryavailabilitybylg.part as SKU,
domo_productcosts_xlsx_costs.`product category` AS `Product Category`,
domo_productcosts_xlsx_costs.`product sub category` AS `Product Sub Category`,
fishbowlinventoryavailabilitybylg.qty AS `On Hand`,
fishbowlinventoryavailabilitybylg.LG AS Location,
fishbowlinventoryavailabilitybylg.allocated AS `Allocated`,
fishbowlinventoryavailabilitybylg.qty - fishbowlinventoryavailabilitybylg.allocated AS `Available`,

为了尝试生成“本月接收”,我尝试了一些不同的方法,但都没有成功。总和部分我可以做的很好,但它正在动态查找我无法弄清楚的列名。我几乎希望我可以做一些类似“shipments.fishbowlinventoryavailabilitybylg.part) 的事情来在 shipments 表中获取该列,但这没有任何意义。

最佳答案

您不能使用变量(例如 SKU 列中的值)作为 MySQL 或大多数其他 SQL 方言中的列名。出于这个原因,大多数数据库设计者都避免使用这种方法来布置表。

大多数需要做这些事情的程序员都会编写程序来生成他们需要的 SQL 查询。名为 information_schema.columns 的内置表可以派上用场。

关于mysql - 动态选择列名(基于另一个表行的值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39604598/

相关文章:

mySQL:查询按世纪分组的与时间相关的行?

Python mysql(使用pymysql)自动重连

php - MySQL/PHP "data too long for column"

php - 推进 2.0 模型 :build cannot find database

php - 如何在 Laravel-5 中构建子查询

mysql - 无法链接 Jenkins 管道中的两个 "sidecar"容器

php - 我怎样才能简化这个 php mysql count 代码并减少查询?

mysql - 长查询字符串会影响速度吗?

mysql - 在 mysql for nodejs 的 where 子句中使用变量与硬编码

MySQL,一次查询更新多个表