-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

エラーメッセージが表示されます。

数量は(リンク、数量)で構成されます。リンクはユニークで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

&menu:(menuId、orderTime); menuIdは一意であり、orderTimeはデータ型時間です。

私の必要性は次のとおりです。リンクが一意で数量から取得されるテーブルorder_time(link、time)を作成します。ここでの時間は、delivery_timeテーブルのようにmenuIdに対応するメニューテーブルからのdelivery_timeとorderTimeのそのリンクに対応する時間の最初のインスタンスの差です。

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 
4

1 に答える 1

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
于 2012-04-16T11:10:25.397 に答える