求sql语句,急。。。

raymond123456 2011-03-29 01:44:11
表结构

dept(分部表)
dept_name varchar(50) Unchecked
area_id varchar(20) Checked(关联到地区表)--至于地区表暂时就不要考虑了



pointdept点部表
pointdept_name varchar(50) Unchecked
dept_name varchar(20) Checked
area_id varchar(20) Checked(关联到地区表)


表关系

pointdept.dept_id = dept.dept_name

表数据
[code=SQL]
dept(分部表)
上海区 黄浦分部
上海区 卢湾分部
上海区 淮海分部
上海区 徐汇分部
上海区 田林分部
上海区 宛平分部
上海区 宜山分部
上海区 闵行分部
上海区 华漕分部
上海区 虹桥分部
上海区 蟠龙分部
上海区 长宁分部
上海区 新华分部
上海区 中山分部
上海区 普陀分部
上海区 虹口分部
上海区 闸北分部
上海区 地平线分部
上海区 七浦分部
上海区 三林分部
上海区 陆家嘴分部
上海区 世纪分部
上海区 松江分部
上海区 泗泾分部
上海区 金山分部
上海区 奉贤分部
上海区 青浦分部
上海区 赵巷分部
上海区 嘉定分部
上海区 南翔分部
上海区 江桥分部
上海区 川沙分部
上海区 张江分部
上海区 静安分部
上海区 联明分部
上海区 宝山分部
上海区 上大分部
上海区 杨浦分部
上海区 金桥分部
上海区 高桥分部
上海区 康桥分部
上海区 南汇分部



点部表数据
南市点部 卢湾分部 上海区
外滩点部 黄浦分部 上海区
罗秀点部 徐汇分部 上海区
上体点部 宜山分部 上海区
沪闵点部 田林分部 上海区
江川点部 闵行分部 上海区
徐泾点部 华漕分部 上海区
辛庄点部 联明分部 上海区
端桥点部 闵行分部 上海区
吴泾点部 闵行分部 上海区
梅陇点部 闵行分部 上海区
华宁点部 闵行分部 上海区
桃浦点部 江桥分部 上海区
古北点部 新华分部 上海区
真源点部 江桥分部 上海区
长寿点部 普陀分部 上海区
石泉点部 普陀分部 上海区
通州点部 虹口分部 上海区
北郊点部 闸北分部 上海区
九龙点部 七浦分部 上海区
彭浦点部 闸北分部 上海区
凯旋点部 地平线分部 上海区
场中点部 虹口分部 上海区
东方点部 世纪分部 上海区
博文点部 张江分部 上海区
金茂点部 陆家嘴分部 上海区
杨思点部 三林分部 上海区
世博点部 三林分部 上海区
明珠点部 陆家嘴分部 上海区
车墩点部 松江分部 上海区
九亭点部 泗泾分部 上海区
仓桥点部 松江分部 上海区
新桥点部 泗泾分部 上海区
佘山点部 泗泾分部 上海区
朱泾点部 金山分部 上海区
石化点部 金山分部 上海区
万枫点部 金山分部 上海区
浦南点部 金山分部 上海区
干巷点部 金山分部 上海区
奉城点部 奉贤分部 上海区
金汇点部 奉贤分部 上海区
青村点部 奉贤分部 上海区
肖塘点部 奉贤分部 上海区
柘林点部 奉贤分部 上海区
重固点部 赵巷分部 上海区
朱家角点部 青浦分部 上海区
凤溪点部 赵巷分部 上海区
白鹤点部 赵巷分部 上海区
安亭点部 南翔分部 上海区
马陆点部 嘉定分部 上海区
外岗点部 南翔分部 上海区
娄塘点部 嘉定分部 上海区
六团点部 南汇分部 上海区
玉港点部 川沙分部 上海区
巨鹿点部 静安分部 上海区
航华点部 联明分部 上海区
罗店点部 上大分部 上海区
吴淞点部 宝山分部 上海区
崇明点部 高桥分部 上海区
淞南点部 宝山分部 上海区
大华点部 上大分部 上海区
五角场点部 杨浦分部 上海区
江湾点部 杨浦分部 上海区
江浦点部 杨浦分部 上海区
高东点部 高桥分部 上海区
金海点部 金桥分部 上海区
鲁汇点部 康桥分部 上海区
浦江点部 康桥分部 上海区
惠南点部 南汇分部 上海区
航新点部 康桥分部 上海区
书院点部 南汇分部 上海区

最终我想实现这样的效果:

黄浦分部 外滩点部
卢湾分部 南市点部
淮海分部
徐汇分部 罗秀点部
田林分部 沪闵点部
宛平分部
宜山分部 上体点部
闵行分部 江川点部
闵行分部 颛桥点部
闵行分部 梅陇点部
闵行分部 吴泾点部
闵行分部 华宁点部
华漕分部 徐泾点
虹桥分部
蟠龙分部
长宁分部
中山分部
新华分部 古北点部
普陀分部 长寿点部
普陀分部 石泉点部
虹口分部 通州点部
虹口分部 场中点部
闸北分部 北郊点部
闸北分部 彭浦点部
地平线分部 凯旋点部
七浦分部 九龙点部
三林分部 杨思点部
三林分部 世博点部
陆家嘴分部 金茂点部
陆家嘴分部 明珠点部
世纪分部 东方点部
松江分部 车墩点部
松江分部 仓桥点部
泗泾分部 九亭点部
泗泾分部 新桥点部
泗泾分部 佘山点部
金山分部 朱泾点部
金山分部 石化点部
金山分部 万枫点部
金山分部 浦南点部
金山分部 干巷点部
奉贤分部 奉城点部
奉贤分部 金汇点部
奉贤分部 青村点部
奉贤分部 肖塘点部
奉贤分部 柘林点部
青浦分部 朱家角点部
赵巷分部 凤溪点部
赵巷分部 重固点部
赵巷分部 白鹤点部
嘉定分部 马陆点部
嘉定分部 娄塘点部
南翔分部 安亭点部
南翔分部 外冈点部
江桥分部 桃浦点部
江桥分部 真源点部
川沙分部 王港点部
张江分部 博文点部
静安分部 巨鹿点部
联明分部 莘庄点部
联明分部 航华点部
宝山分部 吴淞点部
宝山分部 凇南点部
上大分部 罗店点部
上大分部 大华点部
杨浦分部 五角场点部
杨浦分部 江湾点部
杨浦分部 江浦点部
金桥分部 金海点部
高桥分部 崇明点部
高桥分部 高东点部
康桥分部 航新点部
康桥分部 鲁江点部
康桥分部 浦江点部
南汇分部 六团点部
南汇分部 惠南点部
南汇分部 书院点部




备注:其实就是匹配分部表后寻找点部表中相关数据,有点部的分部显点部,没有点部的分部,不显示点部。。。
...全文
149 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 ssp2009 的回复:]
引用 9 楼 raymond123456 的回复:
SQL code

方案一:
select a.area_id,a.dept_name,b.pointdept_name from dept a
left join pointdept b on a.dept_name = b.dept_id where a.area_id='上海区'
(82 行受影响)

方案二:
selec……
[/Quote]
快溜 2011-03-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 raymond123456 的回复:]
SQL code

方案一:
select a.area_id,a.dept_name,b.pointdept_name from dept a
left join pointdept b on a.dept_name = b.dept_id where a.area_id='上海区'
(82 行受影响)

方案二:
select a.area_id,a.dept_name,b.p……
[/Quote]dept 有82个上海,pointdept 有72个上海
raymond123456 2011-03-29
  • 打赏
  • 举报
回复
12,14 楼 说得我明白了。。
以前只知道用,现在得知道为什么要这样用,谢谢大家的帮助!
andysun88 2011-03-29
  • 打赏
  • 举报
回复


方案一:
select a.area_id,a.dept_name,b.pointdept_name from dept a
left join pointdept b on a.dept_name = b.dept_id where a.area_id='上海区'
(82 行受影响)

--方案一中 你用的是 left join 所以返回的数据是 a表的数据集 where a.area_id='上海区'
删除的是a表即是主表对应的ID 所以删除的是a表里面area_id='上海区'的数据


方案二:
select a.area_id,a.dept_name,b.pointdept_name from dept a
left join pointdept b on a.dept_name = b.dept_id where b.area_id='上海区'
(72 行受影响)

--方案二中 你用的是 left join 所以返回的数据是 a表的数据集 where b.area_id='上海区'
删除的是b表即是附表对应的ID 所以删除的是a表里面附表area_id='上海区'的数据




「已注销」 2011-03-29
  • 打赏
  • 举报
回复
没测试,LZ试试

SELECT D.dept_name,pointdept_name =ISNULL(P.pointdept_name,'')
FROM dept D LEFT JOIN pointdept P ON P.dept_id = D.dept_name ----这个条件LZ自己写的,不过看着表结构好像没有pointdept.dept_id这个字段啊???

AcHerat 元老 2011-03-29
  • 打赏
  • 举报
回复
1# 筛选主表是上海区的,主表里有的上海区的记录可能在字表里没有,但是结果会以NULL的形式出现,所以多一些,82行

2# 从字表里筛选,那么会过滤掉主表里分部没有的记录,上海区的在字表里有72条记录,为NULL的不会显示。
--小F-- 2011-03-29
  • 打赏
  • 举报
回复
条件都不一样 当然 不一样了

要搞清楚 左连接的原理
raymond123456 2011-03-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 acherat 的回复:]
引用 6 楼 ssp2009 的回复:

楼上两位。pointdept里没有dept_id


pointdept.dept_id = dept.dept_name

表数据
[code=SQL]
楼主给的!
[/Quote]

一样的
raymond123456 2011-03-29
  • 打赏
  • 举报
回复

方案一:
select a.area_id,a.dept_name,b.pointdept_name from dept a
left join pointdept b on a.dept_name = b.dept_id where a.area_id='上海区'
(82 行受影响)

方案二:
select a.area_id,a.dept_name,b.pointdept_name from dept a
left join pointdept b on a.dept_name = b.dept_id where b.area_id='上海区'
(72 行受影响)

想问下大家是什么原因?
--小F-- 2011-03-29
  • 打赏
  • 举报
回复
他自己写的 表关系啊 我没看出来表关系
AcHerat 元老 2011-03-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ssp2009 的回复:]

楼上两位。pointdept里没有dept_id
[/Quote]

pointdept.dept_id = dept.dept_name

表数据
[code=SQL]
楼主给的!

快溜 2011-03-29
  • 打赏
  • 举报
回复
楼上两位。pointdept里没有dept_id
AcHerat 元老 2011-03-29
  • 打赏
  • 举报
回复

select isnull(b.pointdept_name,'') pointdept_name,a.dept_name
from dept a left join pointdept b
on a.dept_name = b.dept_id
--小F-- 2011-03-29
  • 打赏
  • 举报
回复
select
a.dept_name ,isnull(b.pointdept_name,'') as pointdept_name
from
dept a left join pointdept b
on
a. dept_name= b.dept_id
快溜 2011-03-29
  • 打赏
  • 举报
回复
表1左连接表二就可以了
select a.dept_name,b.pointdept_name from dept a
left join pointdept b on a.dept_name = b.dept_name
快溜 2011-03-29
  • 打赏
  • 举报
回复
select a.pointdept_name,b.dept_name from dept a
left join pointdept b on a.dept_name = b.dept_name
--小F-- 2011-03-29
  • 打赏
  • 举报
回复
大哥 你测试数据 太吓人了 这么长

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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