2016-04-23 22 views
0

需要关于赋值问题的帮助!需要使用更新和子查询来将正确的日子添加到与其他表中的正确列和行相匹配的不同行中。尝试使用DVD更新条目的到期日(7天+ checkedOut日期)。到目前为止,我尝试使用下面的代码使用子查询将ORACLE添加到列中

UPDATE LOAN 
SET (SELECT DUEDATE 
    FROM Media 
    JOIN Item USING (MediaID) 
    JOIN InventoryItem USING (ItemID) 
    JOIN Loan USING (InventoryItemID) 
    WHERE MediaCode = 'DVD') = DATETIME (checkedOut, '+7 days') 

对于某些原因,它不断给我的错误“靠近‘(’:语法错误:”试图运行它时,只要我想改变DVD的全部到期日期。正确(7天),根据签出日期添加。任何帮助将不胜感激。

+0

感谢回答。这是使用SET表=值Oracle.I尝试,但它在不断变化的所有duedates而不是只有一个类别,即DVD。 –

+0

请将标记更改为oracle.imo,当您使用子查询时,它并没有真正改变,并且您不告诉SQL将哪个列存储到结果中?哪一列在'LOAN'中,你真的想要更新吗?将该查询更改为如下内容:'更新贷款SET loan.columnA =(subquery)where loan.columnA = 42;'例如 –

+0

如果您提供了涉及表的结构,至少表和它们的表相对列。在每个表格中包含数据样本也会有所帮助,但并非真正必要。最重要的是要知道你的表的结构以及你真正想要更新哪个字段。 – gmiley

回答

0
UPDATE LOAN 
SET DUEDATE = checkedOut + INTERVAL '7' DAY 
WHERE InventoryItemID IN (
    SELECT InventoryItemID 
    FROM InventoryItem 
     JOIN Item USING (ItemID) 
     JOIN Media USING (MediaID) 
    WHERE MediaCode = 'DVD' 
) 
相关问题