内部连接失败 - 不返回任何数据

时间:2012-02-14 07:20:32

标签: sql inner-join

我在内部加入表和视图时遇到了一些问题。 视图为pageviewforum,其中列为forumn_no varchar2,列为totalcount,这是每个论坛中总浏览量的计数。

另一张表是 forumforum_no char(6), forumname varchar2(50)

我想输出totalcount forum_no及其论坛名称,但它不起作用。

select forum.forumname, totalcount from pageviewforum 
inner join forum on pageviewforum.forum_no= forum.forum_no; 

以上查询返回无数据的错误消息。 我试图看看

的结果
select forum.forumname, totalcount from pageviewforum 
inner join forum on pageviewforum.forum_no > forum.forum_no;

并且数据出来了。我尝试使用,但它也没有数据。 我该怎么办?

1 个答案:

答案 0 :(得分:5)

由于您使用varchar2列加入char(6)不确定大小的列,因此可能会因此而遇到差异。如果这些列包含数字,为什么不使用数字类型(如INTEGER)来保存值?从长远来看,它会更可靠。通常,连接柱在相同类型时最可靠地工作。当它们属于不同类型时,您必须担心这两种类型是否足够兼容以及它们是否合理比较。

假设:特别是,CHAR(6)列是空白填充到全长;除非DBMS剥离那些尾随空白,否则你可能永远不会得到CHAR(n)和VARCHAR(n)来比较相等,除非所有n个字符都在使用中。 >比较有效,因为空白对于平等很重要,但是大于或小于仍然可以得出答案。

观察:

  • 数据库中的列类型很重要。
  • 一致性非常重要。