NetSuite REST API查询transactionline关联多account问题咨询
问题1解答
你的原有认知是正确的:transactionline的uniquekey确实是全局唯一的主键,单条交易行只会关联唯一的account记录。
出现多返回结果的核心原因是你的SQL遗漏了交易行表和科目表的关联条件:你现有的WHERE子句里只建立了transaction和transactionline的关联,没有声明transactionline.account和account.id的对应关系,相当于触发了两个表的笛卡尔积连接——符合ac.acctnumber > 123456的所有account记录,都会和唯一匹配的那条transactionline、transaction记录拼接成新行返回,自然就出现了多条结果。你之前用ac.acctnumber = 123456时只返回单条,是因为恰好满足该条件的account记录只有1条,刚好掩盖了关联条件缺失的问题。
问题2解答
你只需要在原有查询条件里补全transactionline和account的关联即可,推荐优先使用显式JOIN写法,避免后续再漏写关联条件:
{ "q": "SELECT * FROM transaction t INNER JOIN transactionline tl ON t.id = tl.transaction INNER JOIN account ac ON tl.account = ac.id WHERE tl.uniquekey = 111222 AND ac.acctnumber > 123456" }
如果习惯用隐式连接的写法,也可以直接在WHERE子句加关联条件:
{ "q": "SELECT * FROM transaction t, transactionline tl , account ac WHERE t.id = tl.transaction AND tl.account = ac.id AND tl.uniquekey = 111222 AND ac.acctnumber > 123456" }
修改后单个uniquekey只会返回唯一关联的account记录,不会再出现多结果的问题。
内容的提问来源于stack exchange,提问作者deal tek
相关产品推荐
相关产品推荐

