2013-06-26 38 views
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, 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' 
) 
+7

你在哪裏使用'DISTINCT'關鍵字? – Joni

+0

'DISTINCT'被隱藏:)人們不得不猜測列需要'DISTINCT' –

+0

我喜歡這個遊戲:-) – Strawberry

回答

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') 
; 
+0

感謝您寶貴的時間。但是查詢沒有執行 –

+0

我不知道'不執行'是什麼意思。 – Strawberry

+0

@Strawberry,你在第30行使用表「sid」,但是你在第31行定義了它('...... JOIN storename_tid sid') –

0

關於SQL連接不同的關鍵字,你可能有一些有趣的here ...
這是我們一次學習的東西,在我們整個生活中使用。

關於您的具體問題,測試這第一個例子,

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」也是一個選項,但按照scriptures(見第5.4.5節)編寫的內容會更有效率。

+0

感謝查詢工作,但太多重複。謝謝你的興趣 –

+0

@vinodJ,你可以用你的創建語句更新你的問題嗎?只有表merchantreports,mpr_reports&storename_tid –

+0

我忘了建議你,AND運算符比OR運算符具有更高的優先級;你應該把'mpr.rec_fmt ='cvd'或mpr.rec_fmt ='bat''放在括號內 –