-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'

編集

allする必要があることを考えると、それは難しいことです。つまり、をチェックすると、 に関連するが表示され、 の値が 7 であることがわかります。これは何にも関連していません。したがって、 allが必要な場合、その結果は得られませんJointablesRFMtableRFMIdPV tableVTIDjointables

于 2012-07-28T06:54:19.083 に答える
-2

テーブル「PM」は、1つの「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 に答える