Oracle:从标题中选择确定,从视图中选择..0行

Oracle:从标题中选择确定,从视图中选择..0行,oracle,Oracle,在我的oracle数据库上 我有这张桌子 desc titolo IDTITOLO NOT NULL NUMBER(11) TITOLO NOT NULL VARCHAR2(190 CHAR) GENERE

在我的oracle数据库上

我有这张桌子

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行,因为您的联接条件不匹配

如果还需要不匹配值的结果,则应使用显式联接条件和左联接

  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;

您确定select正在返回结果吗?从TITOLO、GENERE、DURATA、FORMATO、Linguaa和用于创建视图的select返回..?您确定满足where条件的所有表中都存在记录吗?简单地说,您没有一条记录满足以下条件:
其中TITOLO.genre=genre.idgenre和TITOLO.DURATA=DURATA.IDDURATA和TITOLO.FORMATO=FORMATO.IDFORMATO和TITOLO.LINGUA=LINGUA.IDLINGUA
意味着它在所有5个表中都有一条相关记录。提供您希望返回的记录数据。显示所有表中的关系。无论问题是什么,您都没有正确地说明它。显示单个表中的计数,且大于零。这怎么意味着该表与其他四个表的联接也必须返回一些东西呢?如果formato显示一个数字,这意味着它包含一个数字。。检查列名称(和相关值)是否正确,并且“我的视图”工作正常。。在我将值按正确的顺序放入sql之前,:(您的注释不清楚..您应该创建一个新问题,并使用适当的数据样本、实际结果和预期结果..一旦发布了新问题,您可以对链接进行注释..这样我就可以看一看了