2017-10-09 61 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