2012-07-28 23 views
-2

可能重複:
how can i use distinct INNER JOIN RFM ON RFM.RFMID=PV.RFMIDID了重複PV.RFMID

Table MMASTER 
    MID col1 
    1 abc 
    2 xyx 
    3 pqr 

    Table AMM 
    AMMID MID col1 col2 
    1  1 bnb mfk 
    2  1 def rwr 
    3  2 re wrwr 

    Table PS 
    UID VTID AMMID SMID col1 col2 
    1 1 1  1 rkk jdj 
    2 2 3  3 kdf lfl 
    6 2 2  4 rgr rtr 

    Table PV 
    VTID PMID RFMID 
    1 2 1 
    2 2 3 
    7 2 2 

    Table RFM 
    RFMID title name 
    1  mr john 
    2  mr jack 
    3  mr jim 

    Table PM 
    PMID col1 col2 
    1 df ere 
    2 rwe rwer 
    3 rwr fwr 

    Table SM 
    SMID MMID col1 col2 
    1 1 fdf efe 
    2 1 ddf dfdf 
    3 2 df ef 

我得到導致這樣的火上面的查詢

PMID title name PV.RFMID 
2  mr. jim 3 
2  mr. jim 3 
2  mr. jim 3 

***BUT RESULT SHOULD BE LIKE THIS*** 
PMID title name PV.RFMID 
2  mr. john 1 
2  mr. jim 3 
2  mr. jack 2 

在我的查詢PV.RFMID後得到重複的v ALUE當RFM並且由於這一頭銜和名字讓加盟複製

+1

那是因爲你通過過濾'WHERE PM.PMID = '2'',並在PM表有三個值與'PM.PMID =' 2''。你有三個連接,導致你的三個輸出 – 2012-07-28 06:16:32

+0

約翰,你的問題是什麼?另外,你爲什麼要命名你的表AMM,PV,PS等?儘管在查詢中可以使用別名,但在這個名稱中找不到任何意義。 – 2012-07-28 06:19:12

+0

更新quetion .. – John 2012-07-28 06:36:31

回答

0

這會給你你想要的輸出:

select pm.pmid, rfm.title, rfm.name, pv.rfmid from PM as PM 
inner join PV on pm.pmid = pv.pmid 
inner join RFM as rfm on pv.rfmid = rfm.rfmid 
WHERE PM.PMID='2' 

編輯

考慮到你需要Join所有tables ,這是棘手的。 我的意思是,檢查RFMtable,你可以看到RFMId,與PV table有關,並且看到VTID有一個7值..這與任何東西無關!所以,如果你需要join所有tables,你不會得到這一結果

+1

雅我知道上面的查詢給我想要的輸出,但必須加入7表不是2 – John 2012-07-28 06:58:26

+0

你真的*需要加入6表?那麼,讓我編輯.. – 2012-07-28 06:59:13

+0

這不是一個答案,我不認爲這是不可能的使用6表加入 – John 2012-07-28 07:14:08

-2

我假設表「PM」是您的交易表,其中一個「PMID」可以有多個條目,從而增加DISTINCT子句之前你查詢會讓你滿意。

試試這個:

SELECT DISTINCT PM.PMID,RFM.TITLE,RFM.NAME ,PV.RFMID FROM MMASTER 
INNER JOIN AMM ON MMASTER.MID=AMM.MID 
INNER JOIN PS ON AMM.AMMID=PS.AMMID 
INNER JOIN PV ON PV.VTID=PS.VTID 
INNER JOIN RFM ON RFM.RFMID=PV.RFMID 
INNER JOIN PM ON PV.PMID=PM.PMID 
INNER JOIN SM ON PS.SMID=SM.SMID 
WHERE PM.PMID='2'