0

重複の可能性:
複数のテーブルからデータを取得する

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

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

で使用する必要distinctがありinner join RFM ON RFM.RFMID=PV.RFMIDます。

私のクエリPV.RFMIDでは、結合時に重複する値が取得RFMされ、そのタイトルと名前が重複するために発生します

distinctこの行でどのように使用できますか

INNER JOIN RFM ON RFM.RFMID = PV.RFMID
4

2 に答える 2

3

それを使用してサブクエリを作成しINNER JOIN、使用できますDISTINCT

SELECT MID,NAME,SEX,AGE,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
(
    SELECT DISTINCT RFMID, NAME
    FROM RFM 
) 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='13'
于 2012-07-27T13:14:04.813 に答える
-1

選択後に使用distinctします。内側の結合線で使用する必要はありません。

 SELECT DISTINCT MID,NAME,SEX,AGE,RFM.TITLE,RFM.NAME 
 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='13' 

すべての一意のデータが必要な場合。

于 2012-07-27T13:14:58.790 に答える