2017-10-09 17 views
1

在我的oracle數據庫。Oracle:從標題中選擇好的,從視圖中選擇0行

我有這個表

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

但是,當我想要查詢我的觀點..

select count(*) from generale; 

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


select * from generale; 

    0 rows 

語法正常,在psql上工作正常..在oracle中返回0行。 爲什麼?

+0

你確定你的選擇是返回結果?從TITOLO, GENERE, DURATA, FORMATO, LINGUA – CodeIsLife

+0

和選擇你用來創建視圖返回..? – Vlad

+1

您確定所有滿足條件的表中都存在記錄嗎?簡而言之,您沒有符合以下條件的單個記錄:WHERE TITOLO.GENERE = GENERE.IDGENERE AND TITOLO.DURATA = DURATA.IDDURATA AND TITOLO.FORMATO = FORMATO.IDFORMATO AND TITOLO.LINGUA = LINGUA。 IDLINGUA'表示它在所有5個表中都有相關的記錄。提供您希望返回的記錄數據。顯示所有表格中的關係。 – xQbert

回答

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

我會嘗試,如果作品視圖,工作正常thnaks – elbarna

+0

如果formato顯示一個數字,這意味着包含一個數字..檢查正確的列名稱(和相關的值) – scaisEdge

+0

不是番茄,是一般錯誤,我會檢查現在 – elbarna