2016-11-19 59 views
0

我试图根据CustNo值将INSERT转换为Accounts,表中连接了AccountId。出于某种原因,我无法弄清楚,SELECT cust.CustNo列基于GivenNameSurnameCusts表列,即使在单独测试时仍然使用相同的WHERE子句进行操作时,也不会获取任何内容。INSERT INTO基于INNER JOIN'd SELECT列没有返回SELECT值

INSERT INTO Accounts (Type, Balance, CustNo) 
    SELECT 
     'Chequing', 0, cust.CustNo 
    FROM 
     Custs cust 
    INNER JOIN 
     Accounts ON cust.CustNo = Accounts.CustNo 
    WHERE 
     cust.GivenName = 'FirstName' AND cust.Surname = 'LastName'; 

我想不出任何理由,这是不返回任何错误,但也工作,并抓住了正确的CustNo作为一个单独的SELECT与此相同WHERE。我错过了一个重要的领域来关联这两个表,或可能不正确地加入他们?

+1

我会建议添加表定义,示例数据以及预期输出。这将有助于他人理解您的问题,并帮助您尽快得到最佳答案。 – tarheel

+0

我真的不明白你为什么加入帐户。您不使用任何字段,如果这是您插入客户的第一个帐户,那么连接将不会导致返回结果 –

+0

@JamesCasey,对于缺乏明确性我表示歉意。类型和余额来自账户,而CustNo,GivenName和Surname来自Cust。 – Jaeriko

回答

0

尽管我并没有完全回答我原来的问题,但是我找到了另一种方法来实现我试图用嵌套的SELECT而不是INNER JOIN做的事情。

对于其他任何人来试图通过INSERT数据基于字段(我NameSurnameCustNo问题)是在另一个相关的表中的一个表,尝试这样的事情:

INSERT INTO Accounts (Type, Balance, CustNo) 
SELECT 'Chequing', 0, (SELECT CustNo FROM Custs)//This is the solution, a nested Select 
WHERE GivenName = 'FirtName' AND Surname = 'LastName'); 
+0

你可以通过从原始文章中的查询中删除内部连接来获得相同的结果 –