一个看似简单又复杂的sql题

问题描述

现在有三张表1.教师表(teacher)结构为teacher_id,teacher_name2.学生表(student)结构为student_id,student_name3.教师学生关联表(teacher_students)结构为teacher_id,students前两张就不用说了,第三张的students数据结构如下student_id:is_later;student_id:is_later的结构student_id表示的是学生id,is_later表示是否迟到,现在考虑要展示如下的情况:teacher_id,teacher_name,student_name:is_later;student_name:is_later 问题补充:lerous 写道

解决方案

你可以问设计人员,设计表的时候有没有考虑怎么取数据的,怎么关联的?还有你说的放在内存中,是说把10000*10000条数据放内存中吗?这样内存能不能负荷可能是个问题,估算了下大概是要1G的内存,如果几个人同时调用那难了其实还有个办法,你可以只关联教师表和学生表,在需要用到islater的时候,然后再传入teacher_id重新查一次,也就是说放在程序里面处理。如果是显示列表的形式就不好办了,要查询的次数就多了
解决方案二:
这样的交流是有利于提升的~ 也学到不少东西,所以不要客气~
解决方案三:
查过了,oracle没有将字符串转成数组的函数,需要将 转成数组和遍历数组的步骤换成(var_tmp是student列,值如“1:0,2:1,3:0”)一段一段的截取,先截取1:0,然后将剩下的部分赋值var_tmp(去掉一个','),再从'1:0'中提取student_id和islater如下SQL:while instr(var_tmp,',')>0 loop var_element := substr(var_tmp,1,instr(var_str,',')-1); var_tmp := substr(var_tmp,instr(var_str,',')+1,length(var_tmp)); ...(提取student_id和islater并插入到临时表)end loop;
解决方案四:
想了想思路,你看这样行的通么,用函数或者过程把,应该是返回游标类型步骤:新建临时表,结构:teacher_id,student_id,islater首先查询关系表teacher_students,循环遍历查询结果,取的student列, 用类似split的函数按‘:’将该列转成数组(不太清楚oracle是否有这个函数),在遍历数组,循环中,将teacher_id,student_id,islater插入到临时表中去,然后关联teacher,student,临时表,删除临时表(不知道删除以后,通过游标获取数据是否会有问题)返回游标。
解决方案五:
我认为要用一个SQL写,够呛,应该不能完成要求把,为什么那张关系表不这样设计呢?teacher_id,student_id,islater一目了然,很变态的表结构~~~
解决方案六:
哦~ 看了下你的数据,我的SQL是不对
解决方案七:
你可以试试吗?我认为不可能会出现你说的那个结果~~~
解决方案八:
是写错了,我知道islater不是ts的列,改了下,试试看select t.teacher_id,t.teacher_name, s.student_id||':'||substr(ts.students,instr(ts.students,':')+1,length(ts.students)-1), s.student_name||':'||substr(ts.students,instr(ts.students,':')+1,length(ts.students)-1)from teacher t,student s,teacher_students ts where t.teacher_id = ts.teacher_id and s.student_id = substr(ts.students,0,instr(ts.students,':')-1)别名你自己改下~
解决方案九:
select t.teacher_id,t.teacher_name, s.student_id||':'||ts.is_later, s.student_name||':'||ts.islaterfrom teacher t,student s,teacher_students tswhere t.teacher_id = ts.teacher_idand s.student_id = substr(ts.students,0,ts.students.indexOf(':'));获取字符':'的oracle函数忘了,应该不是indexOf(),应该是有这个函数的

时间: 2024-09-25 09:46:05

一个看似简单又复杂的sql题的相关文章

一个看似简单实则颇有些难度的go语言问题,关于密码输入

问题描述 一个看似简单实则颇有些难度的go语言问题,关于密码输入 RT. 具体要求:输入一串字符(中间可能有各种空格啊符号啊之类)作为密码,以回车键结束 由于是密码,所以输入时屏幕不能明文显示,当每输入一个字符则显示为一个*,最后密码由一个string型变量获取 好像用go语言不是那么好实现,尤其是考虑到退格键以及方向键改变输入顺序的问题(比如输入的时候用方向键将光标前移后插入内容),还有delete键带来的删除效果-- 各位大神有什么好的解决方案?期待最简洁的代码--

视错觉:从一个看似简单的自定义控件说起

为什么要写今天这篇博客那就说来话长了,那是在一个大雪纷飞的冬天--然后--.好了,不扯淡了,直接进入今天的主题吧,这篇博客是关于iOS自定义组件的东西.一些UI效果看起来似乎是这个样子,其实本质不是这个样子.在做一些UI效果时我们可以利用视错觉的一些东西,让用户看到的是一个东西,其实你实现的又是一个东西.原则是想方设法骗过用户的眼睛.视错觉如果和UI实现结合起来,有时会产生意想不到的效果. 一.视错觉的概述 引用--"视错觉就是当人观察物体时,基于经验主义或不当的参照形成的错误的判断和感知.视错

看似简单,思考了很久的编程题,大神求解???

问题描述 看似简单,思考了很久的编程题,大神求解??? 输入n(1-10之间数字),将数字分解显示,如6可以显示为6,5+1,4+2,4+1+1..... 解决方案 http://ideone.com/bhnyWO 1+1+1+1+1 1+1+1+2 1+1+3 1+2+2 1+4 2+3 5 解决方案二: using System; using System.Linq; using System.Collections.Generic; public class Test { static i

Ultradev实例教程:5 做一个相对简单的网站后台(2)

后台|教程 首先创建首页,就是现实最新更新的5条新闻纪录.利用我们学到的Ultradev显示纪录的功能,很容易你就能创建好如下图的页面: 怎么显示最新更新的5条记录呢?让我们来看看创建记录集的对话框: 如果我们按照一般创建记录集的方法,在上图中的SQL栏中显示的内容就会是: SELECT ID,title,insert_time (我们只需要显示新闻的标题和记录时间,而新闻内容不需要现实,所以不用选择content这个字段) FROM article 我们将她修改成上面的样子.top 5表示我只

SEO看似简单但更应该拒绝浮躁的心理

SEO一提起嘛,不外乎就是原创加外链,我相信这个已经是被提烂了的说法了,所以好多人一来就觉得SEO太简单了,不就是写写文章嘛,发发外链嘛,这个谁不会啊,也就是好多人天天没命的写原创,网站为什么还是不收录;好多人疯狂的发外链,为什么排名还是没有上升,天天在QQ群里边这样的人太多了,简直是数不甚数,所以SEO也才被人为民工职业,也是好多人选择了退出的原因,其实真的是这样吗,或许好多人在说这句话之前都忽略了一个前提,而且是一个很重要的前提:那就是在做这些原创和外链之前就是网站已经完全搭建好了,而且也是

API入门系列之四 -一个相当简单的SDK程序

大家好,还是我beyondcode,再次见面,前面介绍的那么多'理论知识',你们都懂了吗? 就 算还没有彻底领悟,但至少还是有那么一点意识了吧,知道有那么一回事了吧.这一篇我打算通过一个 小小小例子,来回忆一下我们以前介绍的相关知识,如Windows的数据类型,特别是和字符和字符串操作 相关的数据类型,还有就是Unicode和ASCII在API函数上的具体体现. 另外,SDK编程交流群已经 建立,很多朋友踊跃参加,系列文章和群的发展离不开你们.群号:81543028. Ok,我们正式开 始,我打

objective-c-ios 想问一个很简单的异步问题

问题描述 ios 想问一个很简单的异步问题 [manager POST:@""https://www.baidu.com"" parameters:@{} success:^(AFHTTPRequestOperation *operation id responseObject) { NSLog(@""ok1""); } NSLog(@""ok2""); 很明显这段代码 如果打印的话 肯

c语言-一道简单的C语言程序设计题

问题描述 一道简单的C语言程序设计题 产生30个[10,100]之间的随机整数到5行6列的数组中,求其中最大值和最小值,并把最大值元素和右上角元素对调,把最小值元素和左上角元素对调.按行.列格式输出重排前.后的情况.(提示:随机函数rand( )的函数值产生一个0~32767之间的随机数, rand( )和 srand(seed)定义在stdlib.h头文件中.先利用以下两条语句:scanf("%u", &seed); srand(seed); 来初始化rand( )的起始值.

PHP分页初探 一个最简单的PHP分页代码的简单实现_php实例

PHP分页代码在各种程序开发中都是必须要用到的,在网站开发中更是必选的一项. 要想写出分页代码,首先你要理解SQL查询语句:select * from goods limit 2,7.PHP分页代码核心就是围绕这条语句展开的,SQL语句说明:查询goods数据表从第2条数据开始取出7条数据.在分页代码中,7表示每页显示多少条内容,2通过公式计算表示翻页数,通过传入不同参数替换"2"的值,即可筛选出不同的数据. index.php: include 'conn.php'; //引入数据库