0

我有三个表,一个是映射故事,即使得到重复值,我也使用 distinct 关键字

SELECT
  mer.store_name,      mpr.`merchant_code` ,    mpr.`terminal_num` ,
  mpr.`rec_fmt` ,      mpr.`bat_nbr` ,          mpr.`Card_Type` ,
  mpr.`card_num` ,     mpr.`transaction_date` , mpr.`settle_date` ,
  mpr.`approval_code`, mpr.`intnl_amt` ,        mpr.`domestic_amt` ,
  mpr.`transid` ,      mpr.`upvalue` ,          mpr.`merchant_trackid` ,
  mpr.`MSF` ,          mpr.`service_tax` ,      mpr.`edu_cess` ,
  mpr.`net_amount` ,   mpr.`debit_credit_type`, mpr.`UDF1` ,
  mpr.`UDF2` ,         mpr.`UDF3` ,             mpr.`UDF4` ,
  mpr.`UDF5` ,         mpr.`seq_num` ,          mpr.`arn_no`
FROM
  `mpr_reports` mpr, merchantreports mer, storename_tid sid
WHERE (
  mer.Store_Name = sid.Store_Name
  AND sid.terminal_num = mpr.terminal_num
  AND mpr.`rec_fmt` = 'cvd'
  OR mpr.`rec_fmt` = 'bat'
)
4

2 回答 2

0

考虑将已发布的查询修改为这样的内容...

SELECT mer.store_name
     , mpr.merchant_code 
     , mpr.terminal_num 
     , mpr.rec_fmt 
     , mpr.bat_nbr 
     , mpr.Card_Type 
     , mpr.card_num 
     , mpr.transaction_date 
     , mpr.settle_date 
     , mpr.approval_code 
     , mpr.intnl_amt 
     , mpr.domestic_amt 
     , mpr.transid 
     , mpr.upvalue 
     , mpr.merchant_trackid 
     , mpr.MSF 
     , mpr.service_tax 
     , mpr.edu_cess 
     , mpr.net_amount 
     , mpr.debit_credit_type 
     , mpr.UDF1 
     , mpr.UDF2 
     , mpr.UDF3 
     , mpr.UDF4 
     , mpr.UDF5 
     , mpr.seq_num 
     , mpr.arn_no
  FROM mpr_reports mpr
  JOIN storename_tid sid
    ON sid.terminal_num = mpr.terminal_num
  JOIN merchantreports mer
    ON mer.Store_Name = sid.Store_Name
 WHERE mpr.rec_fmt IN ('cvd','bat')
 ;
于 2013-06-26T14:12:13.363 回答
0

关于 SQL 连接,您可能会在这里获得一些乐趣……
这是我们学习一次,终生使用的东西。

关于您的具体查询,测试第一个示例,

SELECT
  mer.store_name,
  mpr.`merchant_code`,
  mpr.`terminal_num`,
  mpr.`rec_fmt`,
  mpr.`bat_nbr`,
  mpr.`Card_Type`,
  mpr.`card_num`,
  mpr.`transaction_date`,
  mpr.`settle_date`,
  mpr.`approval_code`,
  mpr.`intnl_amt`,
  mpr.`domestic_amt`,
  mpr.`transid`,
  mpr.`upvalue`,
  mpr.`merchant_trackid`,
  mpr.`MSF`,
  mpr.`service_tax`,
  mpr.`edu_cess`,
  mpr.`net_amount`,
  mpr.`debit_credit_type`,
  mpr.`UDF1`,
  mpr.`UDF2`,
  mpr.`UDF3`,
  mpr.`UDF4`,
  mpr.`UDF5`,
  mpr.`seq_num`,
  mpr.`arn_no`
FROM merchantreports mer
INNER JOIN storename_tid sid ON (sid.Store_Name = mer.Store_Name)
INNER JOIN `mpr_reports` mpr ON (sid.terminal_num = mpr.terminal_num)
WHERE mpr.rec_fmt IN ('cvd','bat');

只是一个谦虚的建议,考虑使用外键来加入你的表。索引列“Store_Name”和“terminal_num”也是一种选择,但遵循经文中所写的内容会更有效(参见第 5.4.5 节)。

于 2013-06-26T14:00:05.313 回答