id获取重复的PV.RFMID

时间:2012-07-28 06:09:44

标签: sql sql-server join

  

可能重复:
  how can i use distinct INNER JOIN RFM ON RFM.RFMID=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在与RFM加入时获得重复值并且由于该标题和名称重复

2 个答案:

答案 0 :(得分: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 :(得分:-2)

我假设那张桌子" PM"是你的交易表,其中一个是" PMID"可以有多个条目,因此在查询之前添加一个独特的条款将为您提供所需的输出。

试试这个:

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'