2012-04-16 50 views
-2
INSERT INTO order_time(link, time) 
SELECT link, CAST 
(
( 
(
    SELECT FIRST (t.time AS dtime) 
    FROM delivery_time t, quantity q 
    WHERE t.link = q.link 
) - 
(
    SELECT FIRST (orderTime) 
    FROM delivery_time t, menu m, quantity q 
    WHERE t.link = q.link 
    AND t.menuId = m.menuId 
) 
) AS time(0) 
) 
FROM quantity where 1 

我收到错误消息。SQL查询:将时差从2个不同的表插入到第3个表中

数量包含(link,qty);链接是唯一的和int

order_time:(link,time);链接是唯一的和int,时间是数据类型时间

delivery_time:(link,menuId,time);对于menuId(int),有不同的时间(数据类型时间),对于menuId的一组不同的时间有一个链接;所以MENUID &时间的组合是独特的:

menuId time link 
1  12:00:00 1 
1  12:10:00 1 
1  14:00:00 2 
1  14:10:00 2 
1  14:20:00 2 
2  12:00:00 3 
2  12:10:00 3 
2  12:20:00 3 
2  14:00:00 4 
2  14:10:00 4 
2  15:00:00 5 

&菜单:(菜单Id,orderTime); menuId是唯一的& orderTime是数据类型时间。

我的需求是:创建一个表order_time(链接,时间)链接是唯一的&取自数量。这里时间是delivery_time & orderTime与菜单表中对应menuId的delivery_time表中的链接相对应的第一个实例的时间差,如delivery_time表中的那样。

ERROR:MySQL said: Documentation 
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(t.time AS dtime) 
    FROM delivery_time t, quantity q 
    WHERE t.link = q.link' at line 6 
+0

请花一些时间来下一次使用的格式化功能。当您提出问题时,在您输入的框下方会出现一个预览,并且有可用的按钮和帮助使您的代码看起来可读。 – Nanne 2012-04-16 08:44:19

+0

我已经按了几次'{}'按钮给你,请检查其余部分,并尝试说清楚,以便看到此人可能实际上能够帮助你 – Nanne 2012-04-16 08:45:38

+2

请不要使用“ * PLZ的帮助,它的紧急*“在这个网站上。 – Lion 2012-04-16 08:46:37

回答

1

试试这个:

INSERT INTO order_time(link, time) 
SELECT link, CAST 
    (
     ( 
      (
      SELECT MIN(t.time) 
      FROM delivery_time t 
       INNER JOIN quantity q ON 
        t.link = q.link 
      ) - 
      (
      SELECT MIN(orderTime) 
      FROM delivery_time t 
       INNER JOIN menu m ON 
        t.menuId = m.menuId 
       INNER JOIN quantity q ON 
        t.link = q.link 
      ) 
     ) AS time(0) 
    ) 
FROM quantity 
where 1 = 1