我在数据库中有两个表,如屏幕截图所示。
tbCompanyAgent中存在一些常见列值,如tbLicence中的值,如LicenseNumber,LicenseIssueDate和LicenseExpirationDate。在一些复杂的sql查询和业务需求之后,列号StateIssuedLicenseNumber,StateIssuedLicenseIssueDate和StatedIssuedLicenseExpirationDate以及tbLicence中的LicenceNumber,DateIssued和ExpirationDate列将合并到tbCompanyAgent中的单个列LicenseNumber,LicenseIssueDate和LicenseExpirationDate。
对于由Group Id Column LicenceType标识的同一组记录,StateIssuedLicenseNumber,StateIssuedLicenseIssueDate和StatedIssuedLicenseExpirationDate中的值也相同。
实际上,所有许可证都有一个常驻条目,存储在StateIssuedLicenseNumber,StateIssuedLicenseIssueDate和StatedIssuedLicenseExpirationDate列中,并由Resident列标识为1。
非居民许可证存储在LicenceNumber,DateIssued和ExpirationDate中,值为0。
我的问题是,如果用户尝试在tbLicence中进行一些应该反映在tbCompanyAgent上的更新。为此,我编写了如下代码行的程序。
[ 1, 4, 8, 10, 20, 30 ].map(&nine_is_greater_than)
# => [ true, true, true, false, false, false ]
它不会更新tbCompanyAgent中的信息。 请帮我!!!
答案 0 :(得分:0)
首先执行以下查询,看看您是否收到任何记录。如果您有记录,请验证一次。
SELECT L.LicenceNumber, L.LicenceIssueDate, L.LicenceExpirationDate
FROM [tbCompanyAgent] CA
INNER JOIN tbLicence L on CA.LicenceNumber = L.LicenceNumber
WHERE L.LicenceNumber = @LicenceNumber
AND L.StateIssuedLicenseNumber = @StateIssuedLicenceNumber
AND L.LicenceIssueDate = @CDateIssued
AND L.StateIssuedLicenseIssuedDate = @CStateIssuedDateIssued
AND L.StateIssuedLicenseExpirationDate = @CStateIssuedExpirationDate
如果上面的查询给你想要的结果,你要在其他表中更新,只需删除select语句并使用这样的更新语句。
UPDATE CA
SET CA.LicenceNumber = L.LicenceNumber, CA.LicenceIssueDate = L.LicenceIssueDate,
CA.LicenceExpirationDate = L.LicenceExpirationDate
FROM [tbCompanyAgent] CA
INNER JOIN tbLicence L on CA.LicenceNumber = L.LicenceNumber
WHERE L.LicenceNumber = @LicenceNumber
AND L.StateIssuedLicenseNumber = @StateIssuedLicenceNumber
AND L.LicenceIssueDate = @CDateIssued
AND L.StateIssuedLicenseIssuedDate = @CStateIssuedDateIssued
AND L.StateIssuedLicenseExpirationDate = @CStateIssuedExpirationDate
答案 1 :(得分:0)
我认为您应该包含要更改的列的哪个表,以便程序准确知道它应该更新的内容?例如tbLicence.LicenceNumber