小编Cim*_*ity的帖子

SQL select用字符串替换整数

目标是使用数字表示的char值替换SQL查询中返回的整数值.例如:

标记为"Sport"的表属性定义为1-4之间的整数值.1 =篮球,2 =曲棍球等.下面是数据库表,然后是所需的输出.

数据库表:

Player     Team     Sport
--------------------------
Bob        Blue     1
Roy        Red      3
Sarah      Pink     4 
Run Code Online (Sandbox Code Playgroud)

期望的输出:

Player     Team     Sport
------------------------------
Bob        Blue     Basketball
Roy        Red      Soccer
Sarah      Pink     Kickball
Run Code Online (Sandbox Code Playgroud)

将这些整数值转换为String值的最佳做法是什么?使用SQL在传递给程序之前转换值?使用脚本语言来改变程序中的值?改变数据库设计?

sql database database-design

18
推荐指数
2
解决办法
3万
查看次数

如何说服某人规范化数据库?

所以我一直致力于这个项目的工作,我正在编写一个与我无法控制的数据库交互的php网站.该数据库是由一位同事"设计"的,该员工已经在公司工作了很多年; 所以最终决定留待他们决定.

当我第一次被带到这个项目上时,我去了同事并解释说数据库模式似乎有缺陷.我解释了规范化数据库以确保数据完整性问题,节省磁盘空间以及它将使程序员(我)工作更容易的重要性.我甚至举例说明了当前设计中如何发生插入,删除和更新异常.然而,同事向我解释说,他们不想让项目数据库过于复杂,并且不会改变时期.

所以现在我已经进入项目的几个月了,每次我必须加入两个表来在一个彼此具有一对一关系的属性中插入一个值时,我就会把头发拉出来.(所以属性应该只是主要关系的一个属性.)数据库看起来很可怕,而且我害怕随着时间的推移,这将会回到我身上,因为我编写了使用数据库的前端.

有没有人有任何关于如何与"优秀"同事交谈以正确设计数据库的建议?或者任何有关如何避免光顾未来的设计的建议我没有参与任何设计?我是否应该在将来拒绝这样的项目?在我的代码中留下评论说数据库不是我在做什么?

谢谢.

编辑:回复评论的其他信息......

我知道数据库的非规范化对于速度目的是有用的,所以我不会忽略它.对于那些没有听说过这种策略的读者,我将举例说明.数据库设计者通常具有列出用户的街道,城市,州和邮政编码的地址关系.虽然每个人都知道邮政编码决定了城市和州,因此构成了一个将邮政编码索引到城市和州的表格.数据库设计人员通常会将这两个表组合在一起,对它们进行去规范化,使用户地址的每个查询都需要从地址表到zip表的连接.这最终加速了查询过程,并且是数据库设计部分非规范化的合理推理.

为了在这里填写一些细节,数据库是为巡回请求系统设计的,因此其中的数据与访问者信息,日期等有关.当前数据库使用的模式从开始到结束是不可预测的.从变量命名模式中最简单的不一致(例如:num_of_visitors,arrivalMethod等)到为单个状态一对一属性定义的单独关系.示例:statusID表示巡视请求的状态,它只能从一组可能的状态(已批准,已拒绝,待处理,已取消)中选择一个有效状态.由于某种原因,数据库的状态表包含:tour_id(主要)旅游关系的关键),statusID.这允许为每个巡回请求定义多个状态.根据设计,巡回请求应该在任何给定时间仅处于一种状态.所以这是设计中的一个缺陷而不是对我的疏忽.

database database-design normalization

16
推荐指数
2
解决办法
2650
查看次数

Oracle滚动或运行总计按月计算

目标:每个月末所有报表的滚动/运行总计.

码:

select 
    TRUNC(ACTHX.STMT_HX_STMT_DATE, 'MM') AS MNTH, 
    COUNT(ACTHX.INVOICE) as STMTS
from ACTHX
group by
    TRUNC(ACTHX.STMT_HX_STMT_DATE, 'MM')
ORDER BY
    TRUNC(ACTHX.STMT_HX_STMT_DATE, 'MM')
Run Code Online (Sandbox Code Playgroud)

电流输出:

MNTH        STMTS
7/1/2009    1
10/1/2010   4
6/1/2011    26
9/1/2011    211
10/1/2011   163
11/1/2011   119
Run Code Online (Sandbox Code Playgroud)

期望的输出:

MNTH        STMTS
7/1/2009    1
10/1/2010   5
6/1/2011    31
9/1/2011    242
10/1/2011   405
11/1/2011   524
Run Code Online (Sandbox Code Playgroud)

sql oracle

8
推荐指数
1
解决办法
6892
查看次数

过度使用Oracle With子句?

我正在为当前雇主编写许多报告查询,利用Oracle的WITH子句允许自己创建简单的步骤,每个步骤都是一个面向数据的转换,它们相互构建以执行复杂的任务.

今天我注意到,过度使用该WITH条款可能会对Oracle服务器的资源产生负面影响.

任何人都可以解释为什么过度使用Oracle WITH子句可能导致服务器崩溃?或者指出一些我可以研究适当用例的文章?我开始WITH大量使用该子句来为我的代码添加结构并使其更容易理解.我希望在这里提供一些信息性的回复,我可以继续有效地使用它.

如果示例查询有用,我会尝试今天稍后发布.

谢谢!

sql oracle common-table-expression oracle11g

7
推荐指数
1
解决办法
3972
查看次数

是否有定义和接受的标准SQL语言?

我记得在大学里参加数据库课程,我们学生们可以选择我们的数据库管理系统.作为我第一次使用数据库,我记得很困惑,根据使用的数据库管理系统,SQL语句有不同的语法.在本课程之前,我认为SQL语言是一种通用语言,用户可以使用该语言与所有数据库进行通信.

那是什么交易?是否有定义的SQL标准?如果是这样,为什么数据库管理系统制造商与规范不同?标准设计是否不完整,并认为公司会将其作为语言扩展的基础?最初的SQL标准是否已过时,制造商是否需要构建更多功能?原始版本是否未及时更新以满足现代应用程序的需求?是为了创造收入的商业模式吗?

谢谢.

sql database

6
推荐指数
2
解决办法
1673
查看次数

Oracle生成IW周日期列表

目标:根据当前日期输出给定时间范围的IW标准周日期列表.

所需输出:当前日期= 4/27/2012,过去7个IW周日期列表

在此输入图像描述

sql oracle optimization

2
推荐指数
1
解决办法
5635
查看次数

如何检测我在Perl中处理哪一行?

有一个文本文件,看起来像:

    200.0     250.0     300.0     350.0     400.0  
162:02:10 017:01:56 017:08:18 011:16:22 008:40:18
    580.0     600.0     620.0     640.0     660.0   
004:04:01 001:47:27 007:25:29 017:44:53 003:07:34
Run Code Online (Sandbox Code Playgroud)

尝试将第1行和第3行解析为"值",将第2行和第4行解析为"时间".

我的代码:

if($line =~ /^\d[^:]*\d/){
     my @values = split(/\s/,$line);
        }
elsif($line =~/^\d+:\d+:\d+/){
     my @time = split(/\s/,$line);
}
Run Code Online (Sandbox Code Playgroud)

问题:始终匹配第一个正则表达式.我对正则表达式#1的理解是,它将匹配以数字开头的行,后跟任何次数不是':'的值,后跟另一个数字.

regex perl

0
推荐指数
1
解决办法
197
查看次数