2014-10-06 101 views
0

我正在使用JavaDB并与两个表在同一个数据库中工作。更新与内部联接

我试图更新“SalesResp”表中的PrevSales列,当Vehicle表的SellDate在指定日期之前时,其值为“Vehicles”表的“SellDate”列中的值。我通过使用两个表中的“VIN”列来匹配两个表之间的数据。

我不断地在我的代码中得到关于内部连接的错误,SQL状态42x01。

UPDATE SALESRESP JOIN VEHICLES ON (SALESRESP.VIN = VEHICLES.VIN) 
SET SALESRESP.PrevSale = VEHICLES.SELLDATE WHERE 
(((VEHICLES.SELLDATE)<'2013-09-24')); 

我试过各种配置,交换INNER JOIN和SET placements,我试过包括一个“FROM”子句。似乎没有任何工作。有什么建议?

编辑:确切的错误代码:

Error code 30000, SQL state 42X01: Syntax error: Encountered "JOIN" at line 1, column 19. 
+0

请显示您收到的错误。此外,我不认为你必须使用INNER,加入应该是足够的。 – JLampon 2014-10-06 14:56:17

+0

编辑它。也尝试过没有“INNER”,它仍然存在“JOIN”这个词。 – 2014-10-06 15:03:43

回答

1

使用下面的代码,看看,更换您的日期,而不是SYSDATE。

UPDATE SALESRESP 
SET SALESRESP.PrevSale = (SELECT VEHICLES.SELLDATE FROM VEHICLES 
WHERE SALESRESP.VIN = VEHICLES.VIN AND 
VEHICLES.SELLDATE <'2013-09-24'); 
+0

是否需要连接?我认为在使用两个不同的表格时需要一个? 编辑:尝试过了,再次得到了一个错误: 错误代码30000,SQL状态42X01:语法错误:第1行遭遇“FROM”,列61 – 2014-10-06 15:07:43

+1

加入关键字实在是没有必要的。有几种方法可以使用where语句中的条件来模拟连接。上面的代码适合你吗? – 2014-10-06 15:09:33

+0

啊好的,很高兴知道这些连接。但它仍然不适合我。相同的错误代码,只有这次与“FROM”错误代码30000,SQL状态42X01:语法错误:在行1,列61遇到“FROM”。 – 2014-10-06 15:11:50

0
UPDATE S SET S.PrevSale = V.SELLDATE FROM SALESRESP S 
inner join VEHICLES V on S.VIN = V.VIN AND V.SELLDATE < '2013-09-24' 
0

OK,让我们尝试更加明确:

UPDATE SALESRESP SET SALESRESP.PrevSale = VEHICLES.SELLDATE FROM VEHICLES JOIN SALESREP ON (SALESRESP.VIN = VEHICLES.VIN) WHERE (((VEHICLES.SELLDATE)<'2013-09-24'))

看看是否能正常工作。

+0

它给了我错误:“错误代码30000,SQL状态42X03:列名'VEHICLES.SELLDATE'在FROM列表中的多个表中。”我尝试添加几个()来尝试将它分离出来,但它也不喜欢那样。 – 2014-10-06 17:40:49

+0

抱歉忘记更改JOIN参考,请参阅上面的更改。 – JLampon 2014-10-06 19:55:30

+0

它还在进行关于“vehicles.selldate”作为多于一个表中的一列。但感谢您的帮助! – 2014-10-06 19:57:16