Sql 内部联接失败-不返回任何数据
我在内部连接表和视图时遇到了一些问题。 该视图为Sql 内部联接失败-不返回任何数据,sql,inner-join,Sql,Inner Join,我在内部连接表和视图时遇到了一些问题。 该视图为pageviewforum,其中包含一列forumn_no varchar2和一列totalcount,这是每个论坛的总页面浏览次数 另一张桌子是 论坛:论坛没有字符(6),forumname varchar2(50) 我想输出带有forum\u no及其论坛名称的totalcount,但它不起作用 select forum.forumname, totalcount from pageviewforum inner join forum on
pageviewforum
,其中包含一列forumn_no varchar2
和一列totalcount
,这是每个论坛的总页面浏览次数
另一张桌子是
论坛
:论坛没有字符(6),forumname varchar2(50)
我想输出带有forum\u no
及其论坛名称的totalcount
,但它不起作用
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;
数据出来了。我试着用like,但它也说没有数据。
我能做什么?由于您将一个不确定大小的
varchar2
列与一个char(6)
列连接在一起,因此您可能会遇到差异。如果这些列包含数字,为什么不使用数字类型(如INTEGER)来保存这些值?从长远来看,它将更加可靠。通常,连接柱在类型相同时工作最可靠。当它们属于不同类型时,您必须担心这两种类型是否足够兼容,以及它们是否进行了明智的比较
假设:特别是,一个CHAR(6)列是空白填充到全长的;除非DBMS去掉这些尾随空格,否则您可能永远不会得到一个CHAR(n)和一个VARCHAR(n)来比较相等,除非所有n个字符都在使用中。
比较有效,因为空格表示相等,但大于或小于仍然可以得出答案
意见:
- 数据库中的列类型很重要
- 一致性很重要
varchar2
列与char(6)
列连接在一起,因此您可能会遇到差异。如果这些列包含数字,为什么不使用数字类型(如INTEGER)来保存这些值?从长远来看,它将更加可靠。通常,连接柱在类型相同时工作最可靠。当它们属于不同类型时,您必须担心这两种类型是否足够兼容,以及它们是否进行了明智的比较
假设:特别是,一个CHAR(6)列是空白填充到全长的;除非DBMS去掉这些尾随空格,否则您可能永远不会得到一个CHAR(n)和一个VARCHAR(n)来比较相等,除非所有n个字符都在使用中。
比较有效,因为空格表示相等,但大于或小于仍然可以得出答案
意见:
- 数据库中的列类型很重要
- 一致性很重要
视图中添加查询吗
?您是否检查了两个论坛编号
列中的现有值?似乎没有常见的值…请尝试以下操作:从pageviewforum中选择forum.forumname、pgfrm.totalcount pgfrm内部加入pgfrm上的forum frm。forum\u no=frm.forum\u no;你注意到你加入了不同数据类型的列了吗?啊,如果我把它转换成字符(pageviewforum.forum\u no)并与forum.forum\u no进行比较,它会起作用吗?你能在你的视图中添加查询吗?你检查了两个forum\u no
列中的现有值了吗?似乎没有常见的值…请尝试以下操作:从pageviewforum中选择forum.forumname、pgfrm.totalcount pgfrm内部加入pgfrm上的forum frm。forum\u no=frm.forum\u no;你注意到你加入了不同数据类型的列了吗?啊,如果我把它转换成字符(pageviewforum.forum_no)并与forum.forum_no进行比较,它会起作用吗?@MarkBannister:Sorta-它也转义到了其他DBMS中。@MarkBannister:Sorta-它也转义到了其他DBMS中。