2017-10-09 13 views
1

私のoracle dbにあります。Oracle:タイトルから選択OK、ビューから選択する.0行

私は

SELECT TITOLO.IDTITOLO, 
    TITOLO.TITOLO, 
    TITOLO.ANNO, 
    GENERE.GENERE, 
    DURATA.DURATA, 
    FORMATO.FORMATO, 
    LINGUA.LINGUA 
    FROM TITOLO, 
    GENERE, 
    DURATA, 
    FORMATO, 
    LINGUA 
    WHERE TITOLO.GENERE = GENERE.IDGENERE AND TITOLO.DURATA = DURATA.IDDURATA AND TITOLO.FORMATO = FORMATO.IDFORMATO AND TITOLO.LINGUA = LINGUA.IDLINGUA 
    ORDER BY TITOLO.IDTITOLO; 

しかし、私としてビュー・ジェネラルを作成...今、私はビューを作成するには、この表に

desc titolo 

IDTITOLO                 NOT NULL NUMBER(11) 
TITOLO                 NOT NULL VARCHAR2(190 CHAR) 
GENERE                 NOT NULL NUMBER(11) 
ANNO                  NOT NULL VARCHAR2(4 CHAR) 
FORMATO                 NOT NULL NUMBER(11) 
DURATA                 NOT NULL NUMBER(11) 
LINGUA                 NOT NULL NUMBER(11) 

を持っており、

select count(*) from titolo; 

    COUNT(*) 
---------- 
     2459 

正常に動作します私のビューを照会したい..

select count(*) from generale; 

    COUNT(*) 
---------- 
    0 


select * from generale; 

    0 rows 

構文はOKです。psqlは正常に動作します。オラクルは0行を返します。 なぜですか?

+0

はあなたの選択が結果を返していることを確認してくださいあなたをしている参加すべきか?TITOLOから GENERE、 DURATA、 LINGUA フォーマト – CodeIsLife

+0

し、[選択]をあなたはビューの返品を作成するために使用した..? – Vlad

+1

where条件を満たすすべてのテーブルにレコードが存在していますか?単純に、これらの条件を満たすレコードは1つではありません。「WHERE TITOLO.GENERE = GENERE.IDGENERE AND TITOLO.DURATA = DURATA.IDDURATA AND TITOLO.FORMATO = FORMATO.IDFORMATO AND TITOLO.LINGUA = LINGUA。 IDLINGUA'これは、5つのテーブルすべてに関連するレコードがあることを意味します。あなたが返すと予想されるレコードのデータを提供します。すべての表の関係を示しています。 – xQbert

答えて

1

結合に正しい列名を使用していることを確認してください。すべてのテーブルに対して内部結合を使用しています。これは、条件の1つがマントでなければ行がないため、結合条件が一致しないために0行を取得できることを意味します。

結果も値をmathcingないためにあなたは、明示的な結合条件を使用し、左

SELECT TITOLO.IDTITOLO, 
     TITOLO.TITOLO, 
     TITOLO.ANNO, 
     GENERE.GENERE, 
     DURATA.DURATA, 
     FORMATO.FORMATO, 
     LINGUA.LINGUA 
    FROM TITOLO 
    LEFT JOIN GENERE ON TITOLO.GENERE = GENERE.IDGENERE 
    LEFT JOIN DURATA ON TITOLO.DURATA = DURATA.IDDURATA 
    LEFT JOIN FORMATO ON TITOLO.FORMATO = FORMATO.IDFORMATO 
    LEFT JOIN LINGUA ON TITOLO.LINGUA = LINGUA.IDLINGUA 
    ORDER BY TITOLO.IDTITOLO; 
+0

私は試してみるとうまくいくのですか? – elbarna

+0

formatoが数値を表示している場合は数字が入ります。正しい列名(および関連する値)を確認してください – scaisEdge

+0

フォーマットが正しくない、genereが間違っています、今すぐチェックします – elbarna

関連する問題