当我尝试将值从一个表导入另一个表时,我没有得到所有结果。示例,请参阅下面的代码,我要求:
JOIN transaction ON transaction.invoice = invoicing.invoice
有时,我有2或3张发票具有相同的发票编号,而更新仅发生在第一个发票编号上,跳过其他具有相同发票编号的发票。
我需要所有发票,包括重复发票。
UPDATE invoicing
JOIN transaction ON transaction.invoice = invoicing.invoice
SET invoicing.raison = transaction.transaction, invoicing.description =
transaction.description, invoicing.voyage_passenger = transaction.voyage_passenger
我错过了什么?
修改
表格交易:
|num |date |invoice |type |transaction |amount |description
|886051 |1375381803 |859532 |A |carte |7.00 |bla bla desc1
|886052 |1375381809 |859532 |P |repro |0.00 |bla bla desc2
表发票 - 比上面的表格多了大约8列,下面没有提到。 同样,我只需要将上面第2行中的信息也包含在新行中的下表中。我现在也意识到我需要一个INSERT而不是UPDATE来插入这些重复的行。
|num |date |invoice |type |raison |amount |description |clientID
|951100 |1375381803 |859532 |A |carte |7.00 |bla bla desc1 |121212
|951101 |1375401111 |859533 |A |carte |7.00 |bla different |222444
感谢您的帮助。
答案 0 :(得分:1)
不知道如何处理ClientId
。根据您的样本数据,发票可以在不同的日期,因此我不确定ClientId对于不同的日期发票是否相同。
insert into invoicing (`num`, `date`, `invoice`, `type`,
`raison`, `amount`, `description`)
select `num`, `date`, `invoice`, `type`, `transaction`, `amount`, `description`
from Transaction t
where not exists
( select `num` from invoicing i
where
i.`num`=t.`num`
and i.`date`=t.`date`
and i.`invoice`=t.`invoice`
and i.`type`=t.`type`
and i.`raison`=t.`transaction`
and i.`amount`=t.`amount`
and i.`description`=t.`description`
)
答案 1 :(得分:0)
连接中第一个表中的发票号可能在第二个表中不存在。为什么不是LEFT JOIN?