紧急!求一个SQL查询~!

liuqinglq 2003-12-29 11:58:41
如题。两个表

表一:

Code char(6)
Name varchar(50)
Checked bit

分别指书号(唯一),书名,是否核查

表二:(与表一是1:n关系)

Code char(6)
MTimes char(2)
Checked bit

分别指书号,改版次数,是否核查(其中书号必须是在表一中存在的,书号和改版次数合起来做为主键)

现在要求得如下一个记录集(Rs):

每条记录包括所有表一中被核查过或者表二中被核查过的记录,该记录有4个字段,包括Code,Name,MTimes,Checked。对于表一中记录的MTimes用一个默认值来代替(比如'00'),表二中记录的Name用表一中的对应Code的Name值。最后要求所有记录都要按Code排序。

想了半天也不知道该用什么样的SQL语句才成……请高手帮忙!!谢谢~
...全文
69 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuqinglq 2004-01-02
  • 打赏
  • 举报
回复
多谢 dio833() 和 chineseProgram(程序王)

想来真是惭愧:

发现自己用 SQL 语句还是严重不足,居然没有想到用 join 的结果做子查询

而且也不知道怎么样给字段设置默认值……

看来光看 SQL 手册还是不行的……

一定要向前辈们好好学习,顺便问一下,哪里有比较好的SQL的教程下载?要那种主要讲解实际例子而不是要分析语法的……

总之,多谢各位,就此结帖
chineseProgram 2004-01-01
  • 打赏
  • 举报
回复
SELECT code, name, '00' AS Mtimes, checked
FROM tb1
WHERE checked = 1
UNION
SELECT tb2.code, name, tb2.Mtimes, tb2.checked
FROM tb2
WHERE tb2.checked = 1
ORDER BY code, mtimes
chineseProgram 2004-01-01
  • 打赏
  • 举报
回复
dio833() 的做法是对的!~!!!!!!!同意他的观点~~~~!
chineseProgram 2004-01-01
  • 打赏
  • 举报
回复
up
dio833 2004-01-01
  • 打赏
  • 举报
回复
join + union ^^
不知道此论坛支不支援繁体中文呢?
我输入简体中文不甚方便


SELECT code, name, '00' AS Mtimes, checked
FROM tb1
WHERE checked = 1
UNION
SELECT tb2.code, name, tb2.Mtimes, tb2.checked
FROM tb2 LEFT JOIN
tb1 ON tb1.code = tb2.code
WHERE tb2.checked = 1
ORDER BY code, mtimes
liuqinglq 2003-12-30
  • 打赏
  • 举报
回复
对了,不是“书号”或者“改版次数”的核查

是指这一次工作(出新书或者把旧书改版)是否核查
liuqinglq 2003-12-30
  • 打赏
  • 举报
回复
表一 是书籍的原始数据啊(可以说是第0次改版)

呵呵~

表二 则是第1-n次改版了

不管是第0次还是第n次,都需要核查,都有一个字段标记。就是这样了
huang59 2003-12-30
  • 打赏
  • 举报
回复
Checked bit 为什么两个表都放呀?一个是书号核查了没有,一个是改版次数核查了没有?
liuqinglq 2003-12-30
  • 打赏
  • 举报
回复
怎么没人来看啊……

高手们来帮帮忙啊!

liuqinglq 2003-12-30
  • 打赏
  • 举报
回复
对了,还有一点要求忘记说了

关于最后结果的排序,不但要按Code排序,而且对于Code相同的要按MTimes排序……



liuqinglq 2003-12-30
  • 打赏
  • 举报
回复
承上

回:azh9703()

join语句的语法我稍微明白一点,但是不管是left,right还是inner(返回记录数最少的就是这个),都有一个共同点,如果符合On条件的表一中记录和表二中记录均存在,那么仅返回一条记录(left是不管表二中是否存在符合On条件的记录,right是不管表一中是否存在符合On条件的记录),而我的要求是要返回两条记录!

看前面我举的例子,对于 Code=AA0001 的记录如果用join语句(不管left/right),则返回两条记录,而不会出现我给出结果中的第一条记录。

你可以用 Select a.Code,a.Name,b.MTimes From a Left Join b On a.Code=b.Code And (a.Checked=1 Or b.Checked=1) 去试试看就明白了!

简单的说,join语句是横向连接,而我要求的结果不但有横向连接,还有纵向联合(而且要排序)。

也就是说,单独用join或者union都是不行的……
liuqinglq 2003-12-30
  • 打赏
  • 举报
回复
回:capcom(大浪淘沙)

我的表应该没有问题。

我的意思是,查询求得的结果应该包含表一和表二中所有checked=1的记录,不是仅“a.checked=1”,是“a.checked=1 or b.checked=1”

举个例子吧:

表一

Code Name Checked
AA0001 book1 1
AA0003 book2 1
AA0017 book3 0

表二

Code MTimes Checked
AA0001 01 1
AA0001 02 1
AA0001 03 0
AA0017 01 1
AA0017 02 0

查询得到的结果应该是:

Code Name MTimes Checked
AA0001 book1 00 1
AA0001 book1 01 1
AA0001 book1 02 1
AA0003 book2 00 1
AA0017 book3 01 1

一共5条记录。用你的SQL语句显然不对……
onebody 2003-12-30
  • 打赏
  • 举报
回复
up
azh9703 2003-12-30
  • 打赏
  • 举报
回复
楼主看看left join 和inner join和right join语法就知道了

capcom 2003-12-30
  • 打赏
  • 举报
回复
哦,少了个FROM!粗心!
capcom 2003-12-30
  • 打赏
  • 举报
回复
说仔细点!你的表好象有问题,看不懂你的题目!猜测你的意图编写代码如下:
表1:a 表2:b
select a.code ,a.name,b.mtime,checked a left join b on a.checked=1 and a.code=b.code

CHECKED这列好象没什么用???????
Domain4.3(明小子)10.10.10更新版主要更新内容如下: 1.驱除部分死连接,恢复部分官方连接 2.改变默认显示页面为本人BLOG 3.修正程序在检测时出错的BUG 4.修正程序在部分系统中无法启动的BUG 5.加了一个功能模块,但还不成熟,隐藏了,高手的话可以用OD调出来!>!< 6.修复前段时间一些朋友反映的错误和程序宏 7.增加四款SKN皮肤! 10.10.11紧急更新: 1.修正新版程序在部分系统中启动后直接导致系统蓝屏的BUG 2.修正域名查询的几个错误 3.修正程序批量检测查询到域名的时候无反映的BUG! Domain4.2(明小子)10.01.16更新版主要更新内容如下: 1.删除所有无关数据 2.优化急速代码 3.改变启动线程 4.增加SQL数据批量导出功能 5.加入几个优化进程模块,非后门.后台运行. 6.锁定主程序栏目宽和高,不在恢复 7.删除“辅助工具”模块中全部代码 8.修正XP SP3 程序下兼容问题 9.重新改写域名查询旁站线程 程序于2010年01月16号调试完毕! 提别提示:第4个功能只能运行在完整版的windows XP 平台系统中,其他平台无法运行,如果出现恢复按钮并不能保存请自行调试与本程序无关.谢谢合作! 宝宝的话:有朋友们的鼓励才会有这个版本的发布,这当是我送给大家2010年里的第一个礼物吧。 Domain4.1(明小子)0901更新版主要更新内容如下: 1.增加新系统兼容模块,全面兼容2000-2008各系统 (部分精简版系统除外) 2.优化网站打开速度,删减部分无用内核信息,全面加快程序启动速度. 3.基于09.05.20号内核提升,改变搜查循环的一个死BUG! 4.删除在0520上增加的一个补针函数,并使用新的函数替换.保证不报错. 5.不在兼容xpsp3,因为没时间去修正这个错误。所以可能部分SP3系统运行不起来本程序 6.增加部分程序扩充空格代码,为下个版本更新做好铺垫 小提示:保留旧的IP反查连接系统,原因没有找到新的和稳定的IP反差服务器!如果有能提供的请与本人联系!谢谢合作 Domain4.1(明小子)0520更新版主要更新内容如下: 1.基于08.10.01号内核提升,修正一次关键错误。 2.替换原程序自带的那个小马,该为最新美化免杀版的小马! 3.添加一个服务器挂钩程序(非插件),使修改后的新内核兼容vista系统。 4.程序数据库默认名为:SetData.mdb 请大家使用3.5版本以上的MDB数据.其他低版本程序可能不兼容! 5.删除后台下载统计代码(以前没发现,本人也是从网站上面下的软件,排除作者自添加行为) 6.加了一个补针,针对sql注入功能中的一个小BUG。 7.删除了很多没有用的代码,最大限度的优化程序启动速度。 8.更新部分在xpsp3下出错的几个小BUG(小问题小解决,这个错误仅针对部分优化过度的XPSP3系统)。 提记:很多朋友说需要修改下程序IP域名查询功能,这里说明下.由于内核找不到关键句柄导致无法更新,下个版本在仔细看看! Domain4.0(明小子)1001更新版主要更新内容如下: 1.更新部分过度优化过的系统不兼容问题。 2.修改内存识别函数,使其降低软件在使用期间所占用的内存大小。 3.基于08.09.15号内核提升,修正因修改软件所出现的几个导致软件崩溃的几个BUG。 4.换了软件自带的那个垃圾皮肤。加入兼容美化皮肤!更美观! 5.兼容前版本数据库支持功能 6.去掉了没有用的PHP入侵选项和几处小BUG...... 转贴是一种美德!分享也是一种快乐,工具仅做辅助作用请勿用在非法用途上! 程序自带本BLOG连接,启动比较慢!不喜勿用!谢谢合作!

28,407

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧