2016-09-15 7 views
0

私のクエリの結果は以下の通りです。これは複数のテーブルにあることに注意してください。複数テーブル内の1つの列で一意の値を選択

EMAIL(A) PROD_ID(B) PROD_NAME(B) CODE(C) 
[email protected] 123456  SUNLIGHT A  002 
[email protected] 123456  SUNLIGHT B  002 
[email protected] 123456  SUNLIGHT C  002 
[email protected] 768901  MOON   003 
[email protected] 881231  STAR   004 

私の質問は以下の通りです。

SELECT A.EMAIL, B.PROD_ID, B.PROD_NAME, C.CODE 
FROM A 
INNER JOIN B ON B.EMAIL = A.EMAIL 
INNER JOIN C ON C.CODE = B.CODE 
GROUP BY A.EMAIL, B.PROD_ID, B.PROD_NAME, C.CODE 
ORDER BY A.EMAIL, C.CODE 

PROD_IDごとに1行のデータしか取得する必要はありません。私はMAX(B.PROD_ID) AS "PROD_ID"を使ってみましたが、まだPROD_IDの複数の行があります。誰かがこれについて何か提案することができますか?または私を助ける?どうもありがとう!

所望の結果である:

EMAIL(A) PROD_ID(B) PROD_NAME(B) CODE(C) 
[email protected] 123456  SUNLIGHT A  002 
[email protected] 768901  MOON   003 
[email protected] 881231  STAR   004 

任意の助けが理解されます。ありがとうございました!

答えて

2

PROD_NAMEを何とか折りたたんだ/集める必要があります。あなたの望む結果にマッチするので、私はMINを使用しました。あなたに合った集まりを使用することができます:

SELECT A.EMAIL, B.PROD_ID, MIN(B.PROD_NAME), C.CODE 
FROM A 
INNER JOIN B ON B.EMAIL = A.EMAIL 
INNER JOIN C ON C.CODE = B.CODE 
GROUP BY A.EMAIL, B.PROD_ID, C.CODE 
ORDER BY A.EMAIL, C.CODE 
+0

ありがとうございます!私はMAXがトリックをするのを知らずにMAXを使用しようとしてきました。 :) どうもありがとう! – thebeast22

+0

EMAIL列に異なる値が含まれている場合にこのクエリが正しく機能しないと思います。 – AlexSmet

+0

はい、同じトリックを使うことができます。 –

関連する問題