DELPHI 两表模糊查询问题

qq_41237083 2018-02-23 03:37:09
学生表:ID,作者姓名,班级
论文表:ID,作者姓名,论文名称,杂志名称,通讯作者(有多个通讯作者写在一起的,都为学生表中人员)


如何用SQL查询某个班级(EDIT1.TEXT)所有作者姓名及通讯作者的所有论文数据
...全文
1429 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqzjb 2018-03-01
  • 打赏
  • 举报
回复
用like就搞定 select a.*,b.* from 论文表 a inner joing 学生表 b on a.作者姓名=b.作者姓名 where a.通讯作者 like '%edit.text%'
秋天之落叶 2018-02-23
  • 打赏
  • 举报
回复
楼主只是通讯作者的是多个姓名累加字符串,就是一个字符串的模糊匹配问题,作者姓名应该是明确的一个人,有必要这么复杂? 看来业余人员和专业人员的思路是不一样啊,也不明白为什么要这样做,哈哈
DelphixpeFan 2018-02-23
  • 打赏
  • 举报
回复
用SQL查询某个班级(EDIT1.TEXT)所有作者姓名及通讯作者的所有论文数据,在不愿意重新整理数据的前提下,只能用游标了,根据提供的班级信息,把指定班级的姓名信息打个游标,逐个传入论文表,用楼上的SQL语句插入临时表(把S1用游标值替代掉,去掉S2,S3,最好在临时表加个查询的姓名字段显示,以方便后期过滤),应该可以解决.
lyhoo163 2018-02-23
  • 打赏
  • 举报
回复
建议使用 like 语句。 第一步,由学生表,获取“作者姓名”,比如“张三王四李二” 每二步,将“张三王四李二”分解成单人名(如果你在保存数据时, 在每人个人名后加一个“,”字符,就更好分了) 比如: S1,s2,s3分别保存分解的姓名 第三步:使用Link的模糊搜索: 'select * from 论文表 where (作者姓名 like '+#39+'%'+S1+'%'+#39+') or (通讯作者 like '+#39+'%'+S1+'%'+#39+') or '+ ' (作者姓名 like '+#39+'%'+S2+'%'+#39+') or (通讯作者 like '+#39+'%'+S2+'%'+#39+') or '+ ' (作者姓名 like '+#39+'%'+S3+'%'+#39+') or (通讯作者 like '+#39+'%'+S3+'%'+#39+') ';
秋天之落叶 2018-02-23
  • 打赏
  • 举报
回复
哦,我的数据库是SQl Server 2008 R2,不同的数据库可能判断子字符串的函数不同,仅提供思路参考吧
秋天之落叶 2018-02-23
  • 打赏
  • 举报
回复
select 论文表.* from 学生表,论文表 where Charindex(EDIT1.TEXT,学生表.班级,0)>0 and 学生表.作者姓名=论文表.作者姓名 and Charindex(学生表.作者姓名,论文表.通讯作者,0)>0 你试一试是不是这样
秋天之落叶 2018-02-23
  • 打赏
  • 举报
回复
条件改成: Charindex(学生表.作者姓名,论文表.作者姓名,0)>0
qq_41237083 2018-02-23
  • 打赏
  • 举报
回复
不是这样的,通讯作者中很多是好几个姓名连在一起的,比如“张三王四李二”,所以通讯作者这块也得模糊查询,班级那里也要模糊查询
秋天之落叶 2018-02-23
  • 打赏
  • 举报
回复
select 论文表.* from 学生表,论文表 where 学生表.班级=EDIT1.TEXT and 学生表.作者姓名=论文表.作者姓名 不知道你的条件“所有作者姓名及通讯作者的所有论文数据”是不是上面的条件?如果必须和通讯作者一致,再加上一个“ and 学生表.作者姓名=论文表.通讯作者 ” 大概是这样了,看看结果对不对

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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