【发布时间】:2015-01-12 11:48:38
【问题描述】:
我有 2 张桌子。一个叫 purchases 与
(id,月份,购买,storeid)
另一个叫 purchases_targets 和
(id, storeid, target1,target2, target3, target4, target5, target6, target7, target8, target9, target10, target11, target12)
purchasing_targets 中的列名对应于月份,即第 1 个月的目标 = target1。 规范化这不是我的选择!!! 我正在尝试做的事情类似于以下内容。
SELECT DISTINCT
purchases.month,
purchases.purchase,
CONCAT('target',purchases.month) AS column_name,
(SELECT
column_name
FROM purchases_targets
WHERE storeid = 1) AS 'target'
FROM purchases
WHERE purchases.storeid = 1
注意上面 column_name 的使用。我已经尝试过了,结果总是为目标列返回目标+月份。我想知道是否有办法可以在 mysql 中完成这项工作。如果需要更多信息,请告诉我。谢谢
【问题讨论】:
-
PREPARE需要使用动态SQL,普通查询无法计算列名。 -
我已经看到了您所说的示例,但所有示例都与子查询无关。在我的情况下,我将如何使用 PREPARE 方法。
-
这似乎是一个设计不佳的架构。为什么不使用值从 1 到 12 的
month列,而不是为月份设置单独的列? -
接手项目。我无法以任何方式更改列结构,因为有很多代码取决于列结构。
标签: mysql sql subquery calculated-columns