mysql 内连接和并集

标签 mysql database crystal-reports

我之前问过如何通过 MYSQL 连接多个表,但现在遇到了新问题。

假设我有这几张 table 。

报销表

-Name---Check Number-----Date------Reimbursement--
-John-----1--------------7/23/12-------$100-------
-Joe------2--------------7/23/12-------$102-------
-Jane-----3--------------7/23/12-------$103-------
-Jill-----4--------------7/23/12-------$104-------

原始声明

-Name---Check Number-----Date---------Amount--
-John-----1--------------7/23/12-------$100---
-Joe------2--------------7/23/12-------$102---
-Jane-----3--------------7/23/12-------$103---
-Jill-----4--------------7/23/12-------$100---

调整后的 claim

-Name---Check Number-----Date---------Amount--
-Jill-----4--------------7/23/12-------$4-----

通过 Crystal 报告的最终结果应该是

-Name---Check #---Claim Type----Date Paid----Amount----Reimbursement--
-John-----1-------Original--------7/23/12-----$100-------$100---------
-Joe------2-------Original--------7/23/12-----$102-------$102---------
-Jane-----3-------Original--------7/23/12-----$103-------$103---------
-Jill-----4-------Original-------7/23/12------$100-------$104---------
-Jill-----4-------Adjusted-------7/23/12------$4----------------------

不是

-Name---Check #---Claim Type----Date Paid----Amount----Reimbursement--
-John-----1-------Original--------7/23/12-----$100-------$100---------
-Joe------2-------Original--------7/23/12-----$102-------$102---------
-Jane-----3-------Original--------7/23/12-----$103-------$103---------
-Jill-----4-------Original-------7/23/12------$100-------$104---------
-Jill-----4-------Adjusted-------7/23/12------$4---------$104---------

我当前的脚本是:

Select  mt.`Check Number` as `Check Number`,
        mt.`Payment Date` as `Payment Date`,
        mt.`Payment Type` as `Payment Type`,
        c1.`Facility Name` as `Facility Name`,
        'Adjustment June 2012' as `Claim Type`,
        c1.`Amount` as Amount,
        mt.Reimbursement as Reimbursement 
  From  Reimbursement mt 
               Inner Join ClaimAdjust_6_2012 c1 
                  on c1.`Check Number`  = mt.`Check Number` and 
                     mt.`Payment Date` = c1.`Payment Date` 
  Where mt.`Payment Date`>='2012-7-1' And 
        mt.`Payment Date`<'2012-8-1' 

Union 

Select  mt.`Check Number` as `Check Number`,
        mt.`Payment Date` as `Payment Date`,
        mt.`Payment Type` as `Payment Type`,
        c1.`Facility Name` as `Facility Name`,
        'Original June 2012' as `Claim Type`,
        c1.`Amount` as Amount,
        mt.Reimbursement as Reimbursement 
 From   Reimbursement mt 
              Inner Join Claim_6_2012 c1 
                    on c1.`Check Number`  = mt.`Check Number` and 
                        mt.`Payment Date` = c1.`Payment Date` 
Where   mt.`Payment Date`>='2012-7-1' And 
        mt.`Payment Date`<'2012-8-1'  

最佳答案

这个查询有效吗?为什么不只加入报销表原始 claim 并将其与调整后的 claim 合并

SELECT      a.Name, a.CheckNumber, a.`Date`,
            b.Amount, a.Reimbursement
FROM        Reimbursement a INNER JOIN
                OrginalClaim b ON
                    a.Name = b.Name AND
                    a.CheckNmber = b.CheckNumber AND
                    a.`Date` = b.`Date`
UNION
SELECT      Name, CheckNumber, `Date`, Amount, NULL as Reimbursement
FROM        AdjustedClaim

关于mysql 内连接和并集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11616253/

相关文章:

java - 我想读取html的内容,我需要用所需的文本更改它

PHP在线购物商店

mysql - 如何创建 SQL 查询以获取另一列的每个 GROUP'ed BY 值的列的唯一值

PHP PDO 未插入数据库

database - 从同一张 table 上的两个不同点自动递增?

mysql - 在 MySQL 中存储 UUID v4

php - 更新到 MAMP 3 并丢失了我的数据库文件

asp.net - CrystalDecisions,.Shared.dll 版本控制问题

c# - 在卷纸上打印

crystal-reports - Crystal 报表字段资源管理器未显示新添加的字段