求助:三表SQL查询

hahakele2021 2021-03-07 02:03:34
请大家帮助一下,写一个SQL查询语句。

表a,表b,表c

表a: id,姓名,工作日期
表B: id,姓名,工资
表C: id,姓名,籍贯

查询:表a中的人的籍贯,条件:工作日期 早于“2021/1/1" 且不在表B 中的姓名。

表只是举了个例子,便于描述。

第一次来csdn,请大家帮你忙了。尽量用高效的语句。如果可以的话,四个表怎样写?
...全文
356 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chshnren1 2021-03-22
  • 打赏
  • 举报
回复
头晕 你这个表设计得有点问题啊
大然然 2021-03-22
  • 打赏
  • 举报
回复
你这表可以设计为2张表,工作日期可以理解为入职日期,是人员的基础信息,不变的,和籍贯一样,所以 ac可以合并成一张表。另外你的B表没有体现每月这个概念,因为工资是每个月都在发,所以B表应该加一个时间类型体现每个月的工资各是多少 另外姓名是基础信息里的,所以工资表不要记录姓名,因为主表已经有了,你非要那么弄的话,以后人改了姓名,你所有表都要跟着改,很麻烦, 而且你根本姓名去查,同名同姓的你就乱套了,应该根据主键去查 表a: id,姓名,工作日期(入职日期),籍贯 表B: id, 人员id,工资,发放日期 select a.姓名, c.籍贯 from 表a a left join 表b b on b.人员id=a.id where a.工作日期>'2021/1/1'
idhgd 2021-03-17
  • 打赏
  • 举报
回复
SELECT a.姓名,c.籍贯 from (a as a left join b as b on (a.姓名=b.姓名 and a.工作日期<#2021-1-1#)) left join c as c on c.姓名=a.姓名 where b.id is null
Rimifon 2021-03-08
  • 打赏
  • 举报
回复
看到了,C表是用来查籍贯的。
select a.姓名, c.籍贯 from 表a a
left join 表b b on b.姓名=a.姓名
left join 表c c on c.姓名=a.姓名
where a.工作日期>'2021/1/1' and b.id is null
Rimifon 2021-03-08
  • 打赏
  • 举报
回复
select a.姓名 from a left join b on b.姓名=a.姓名 where a.工作日期>'2021/1/1' and b.id is null
Rimifon 2021-03-08
  • 打赏
  • 举报
回复
C表是来围观的是吗?
select a.姓名 from a left join b on b.name=a.name where b.id is null

28,409

社区成员

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

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