有条件地在同一个表

时间:2015-11-22 16:58:31

标签: mysql sql database redmine

在Redmine中工作,我需要根据匹配的项目ID号和时间条目将数据从某些行复制(不移动)到其他行。

我已经包含了表“custom_values”的图表以及我对下面设计的理解(当前数据):

+----+-----------------+---------------+-----------------+-------+
| id | customized_type | customized_id | custom_field_id | value |
+----+-----------------+---------------+-----------------+-------+
| 1  | Project         |             1 |               1 | 01    |
| 2  | TimeEntry       |             1 |               4 | 01    |
| 3  | Project         |             2 |               1 | 02    |
| 4  | TimeEntry       |             2 |               4 | 02    |
| 5  | Project         |             3 |               1 | 03    |
| 6  | TimeEntry       |             3 |               4 |       |
| 7  | Project         |             4 |               1 | 04    |
| 8  | TimeEntry       |             4 |               4 |       |
+----+-----------------+---------------+-----------------+-------+

冒着过度简化的风险,

  • “id”= custom_values中每个条目的主键

  • “customized_type”=指定行引用的数据库表。

  • “customized_id”=指定先前在“customized_type”中指定的db表条目的主键。

  • “custom_field_id”=指定行引用的自定义字段。 Redmine管理员可以随意添加和删除自定义字段。

  • “value”=由指定的自定义字段中包含的数据 “custom_field_id”

在我的情况下,“值”中列出的值代表唯一的客户ID号。每次输入时,并不总是输入客户ID号。我需要将项目行中的客户编号复制到匹配的时间输入行。每次条目都有一个project_id字段。

到目前为止,这是我的错误SQL查询:

SELECT 
custom_field_id,
custom_values.value AS 'CUSTOMER_NUMBER', 
custom_values.customized_id AS 'PROJECT_ID_NUMBER', 
custom_values.customized_type,
time_entries.comments AS 'TIME_ENTRY_COMMENTS'
FROM
redmine_tweaking.custom_values
LEFT JOIN
redmine_tweaking.time_entries ON custom_values.customized_id = time_entries.project_id
WHERE 
custom_values.customized_type='Project' AND custom_values.custom_field_id=1;

到目前为止,我的查询允许我看到我将时间条目正确连接到匹配的项目,但这是我能够弄清楚的。换句话说,这个SQL语句并没有完全解决我的问题。

另外,即使它确实有效,我认为我铺设它的方式看起来像200磅的鸟粪。必须有更好/更优化的方法来做到这一点。

非常感谢任何帮助。我比较新,而且我已经花了好几个小时来解决这个问题。

更新:

好的,这是time_entries表:

+----+------------+---------+----------+-------+----------+-------------+------------+-------+--------+-------+---------------------+---------------------+
| id | project_id | user_id | issue_id | hours | comments | activity_id | spent_on   | tyear | tmonth | tweek | created_on          | updated_on          |
+----+------------+---------+----------+-------+----------+-------------+------------+-------+--------+-------+---------------------+---------------------+
|  1 |          1 |       1 |        1 |   .25 |  test    |          9  | 2015-11-04 | 2015  |    11  |  45   | 2015-11-04 08:18:12 | 2015-11-04 10:18:12 |
|  2 |          2 |       1 |        1 |   .25 |  test2   |          9  | 2015-11-04 | 2015  |    11  |  45   | 2015-11-04 09:18:12 | 2015-11-04 12:18:12 |
+----+------------+---------+----------+-------+----------+-------------+------------+-------+--------+-------+---------------------+---------------------+

与我第一次发布的原始表格相反,预期的输出会显示:

+----+-----------------+---------------+-----------------+-------+
| id | customized_type | customized_id | custom_field_id | value |
+----+-----------------+---------------+-----------------+-------+
| 1  | Project         |             1 |               1 | 01    |
| 2  | TimeEntry       |             1 |               4 | 01    |
| 3  | Project         |             2 |               1 | 02    |
| 4  | TimeEntry       |             2 |               4 | 02    |
| 5  | Project         |             3 |               1 | 03    |
| 6  | TimeEntry       |             3 |               4 | 03    |
| 7  | Project         |             4 |               1 | 04    |
| 8  | TimeEntry       |             4 |               4 | 04    |
+----+-----------------+---------------+-----------------+-------+

0 个答案:

没有答案