将从另一个表获得的值添加到所有行

时间:2013-12-18 17:15:55

标签: mysql sql database

我有两个名为slotLength的表和一个名为schedule的表。以下是他们的描述:

+------------+------+------+-----+----------+-------+
| Field      | Type | Null | Key | Default  | Extra |
+------------+------+------+-----+----------+-------+
| slotLength | time | NO   | PRI | 00:00:00 |       |
+------------+------+------+-----+----------+-------+


+-----------+-------------+------+-----+----------+----------------+
| Field     | Type        | Null | Key | Default  | Extra          |
+-----------+-------------+------+-----+----------+----------------+
| dayId     | int(1)      | NO   | PRI | NULL     | auto_increment |
| dayName   | varchar(15) | YES  |     | NULL     |                |
| startHour | time        | YES  |     | 08:00:00 |                |
+-----------+-------------+------+-----+----------+----------------+

我知道他们没有最好的设计,但我还在学习。此外,他们只是一个实验,所以请忽略他们的设计中的错误。

在我继续之前,让我们假设slotLenght表只包含一行,让我们调用它的值slotSize。

我想计算startHour + slotSize * n,其中startHour表示调度表中startHour列的值,n是数字。更具体地说,让我们看一个例子, 如果slotSize为“01:00:00”且startHour的值为“09:00:00”,则startHour + slorSize * 3我希望价值“12:00:00”。

查询应该如何?谢谢。

1 个答案:

答案 0 :(得分:1)

我不确定你是否可以在SQL中与时间字段相乘。加法和减法相当容易,但乘法会变得复杂一些。您可以使用ADDTIME()作为等式的一部分,但我不确定乘法部分。一些较重的数学可能不得不发挥作用。

以下是MySQL时间函数列表

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

编辑:

或许转换为秒,乘法,然后转换回来的东西都可行。我对MySQL并不过分熟悉,所以希望有人会给你你想要的查询,但这应该让你开始尝试自己。

SELECT ADDTIME(startHour, SEC_TO_TIME(TIME_TO_SEC(slotSize) * 3)) AS Calculated
FROM Table, OtherTable

不确定是否需要^表,所以如果它没有它就可以忘记如果不将它扔到那里选择startHour。

我相信这接近你所期待的。正如我所说,不熟悉MySQL错误很可能在于等待ADDTIME()函数,因为我认为它需要日期部分才能工作。