-2

可能重复:
我如何在 RFM.RFMID=PV.RFMID 上使用不同的 INNER JOIN RFM

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并且由于该标题和名称重复

4

2 回答 2

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'

编辑

考虑到你需要allJointables这很棘手。我的意思是,检查RFMtable,你可以看到RFMId,相关PV table,并看到VTID有一个 7 值..这与任何东西都没有关系!所以,如果你需要joinall tables,你不会得到那个结果

于 2012-07-28T06:54:19.083 回答
-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'
于 2012-07-28T07:14:04.433 回答