2017-11-14 2 views
-1

私は顧客からのデータを取得する方法でこのコードを構成する方法を知りたいと思います。私の問題は、私が必要としているものに反するレンタルのデータを繰り返していることです。ORA-01791:oracle join

SELECT DISTINCT C.CUSTOMER_ID , (C.FIRST_NAME|| ' ' || C.LAST_NAME) "Customer Name" 
FROM CUSTOMER C 
    JOIN RENTAL R ON C.CUSTOMER_ID = R.CUSTOMER_ID 
ORDER BY C.LAST_NAME; 

これは私に16044行を与えるとき、私は599行を取得する必要があります。

+0

と、それは任意の最初または最後の名前が過剰先頭または末尾の空白を持っている可能性があることを行うことができますか? –

+1

「繰り返し」データとはどういう意味ですか?この質問を最小限かつ再現性のあるものにすることができますか? –

+0

私は 'DISTINCT'キーワードを使用しないと、16044行を取得していると言います。キーワードでは' ORA-01791'エラーが発生します。列の 'DISTINCT'セット。 @kaushiknayakの答えを参照してください。 –

答えて

1

個別の顧客のみをレンタル対象から取り出し、顧客と参加します。あなたが受け取ったエラー - ORA-01791ORDER BY C.LAST_NAMEを使用していると思います。 ORDER BY "Customer Name"またはORDER BY 2

SELECT 
     C.CUSTOMER_ID , 
     (C.FIRST_NAME|| 
     ' '   || 
       C.LAST_NAME) "Customer Name" 
FROM 
     CUSTOMER C 
JOIN 
     (SELECT DISTINCT CUSTOMER_ID FROM RENTAL 
     ) R ON C.CUSTOMER_ID = R.CUSTOMER_ID 
ORDER BY 
     2; 
0

を使用するかあなたは

SELECT C.CUSTOMER_ID , (C.FIRST_NAME|| ' ' || C.LAST_NAME) "Customer Name" 
FROM 
CUSTOMER C 
WHERE 
C.CUSTOMER_ID IN 
(SELECT DISTINCT CUSTOMER_ID FROM RENTAL) 
ORDER BY 
C.CUSTOMER_ID 
関連する問題