我在内部加入表和视图时遇到了一些问题。
视图为pageviewforum
,其中列为forumn_no varchar2
,列为totalcount
,这是每个论坛中总浏览量的计数。
另一张表是
forum
:forum_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;
并且数据出来了。我尝试使用,但它也没有数据。 我该怎么办?
答案 0 :(得分:5)
由于您使用varchar2
列加入char(6)
不确定大小的列,因此可能会因此而遇到差异。如果这些列包含数字,为什么不使用数字类型(如INTEGER)来保存值?从长远来看,它会更可靠。通常,连接柱在相同类型时最可靠地工作。当它们属于不同类型时,您必须担心这两种类型是否足够兼容以及它们是否合理比较。
假设:特别是,CHAR(6)列是空白填充到全长;除非DBMS剥离那些尾随空白,否则你可能永远不会得到CHAR(n)和VARCHAR(n)来比较相等,除非所有n个字符都在使用中。 >
比较有效,因为空白对于平等很重要,但是大于或小于仍然可以得出答案。
观察: