在线急等\在线急等\在线急等\在线急等,一条select语句

hellonazx 2008-11-03 03:48:35
表结构
CREATE TABLE TB_SYSTEM_DZM_DD
(
N_ID NUMBER(19) NOT NULL,
C_DZM VARCHAR2(6 CHAR),
C_NAME VARCHAR2(100 CHAR),
C_INFO VARCHAR2(200 CHAR)
);
CREATE TABLE TB_USER_DZM_DATA
(
N_BH NUMBER(18),
C_USERID VARCHAR2(32 CHAR) NOT NULL,
N_ID NUMBER(18) NOT NULL
)
数据情况:
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
2, '110000', '北京', '全国');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
3, '110100', '市辖区', '市辖区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
4, '110101', '东城区', '北京市东城区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
5, '110102', '西城区', '北京市西城区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
6, '110103', '崇文区', '北京市崇文区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
7, '110104', '宣武区', '北京市宣武区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
8, '110105', '朝阳区', '北京市朝阳区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
9, '110106', '丰台区', '北京市丰台区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
10, '110107', '石景山区', '北京市石景山区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
11, '110108', '海淀区', '北京市海淀区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
12, '110109', '门头沟区', '北京市门头沟区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
13, '110111', '房山区', '北京市房山区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
14, '110112', '通州区', '北京市通州区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
15, '110113', '顺义区', '北京市顺义区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
16, '110114', '昌平区', '北京市昌平区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
17, '110200', '县', '县');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
18, '110224', '大兴县', '北京市大兴县');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
19, '110226', '平谷县', '北京市平谷县');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
20, '110227', '怀柔县', '北京市怀柔县');

INSERT INTO TB_USER_DZM_DATA ( N_BH, C_USERID, N_ID ) VALUES (
1, 'cg143', 2);

现在要这两个表关联输出结果要求,当C_USERID=’cg143’时:
N_ID C_DZM C_NAME
2 110000 北京
2 110100 市辖区
2 110101 东城区、
。。。。。。
...全文
202 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
sleepzzzzz 2008-11-03
  • 打赏
  • 举报
回复
楼主好可爱
hellonazx 2008-11-03
  • 打赏
  • 举报
回复
哎,可笑的人。求人不如求己。我自己搞出来!
YY_MM_DD 2008-11-03
  • 打赏
  • 举报
回复
问题基本雷同,稍加变换下
范佩西_11 2008-11-03
  • 打赏
  • 举报
回复
重新写,说清除点。高分。保证那些星星会给你回的。这不难的。只是你没表达清除
范佩西_11 2008-11-03
  • 打赏
  • 举报
回复
我真是服了你了。乱七八糟的阿。你发个帖子加分再发吧。用substr,instr之类的函数可以搞定的。我下班走人了。
hellonazx 2008-11-03
  • 打赏
  • 举报
回复
TB_USER_DZM_DATA 这个表是对用户授权地区表。代表这个用户可以管理那些N_ID地区。
hellonazx 2008-11-03
  • 打赏
  • 举报
回复
不对呀,因为TB_USER_DZM_DATA 表中还有其他数据,N_ID对应的是TB_SYSTEM_DZM_DD 中一个具体的县,也就是说c_dzm编码后两位不是‘00’
INSERT INTO TB_USER_DZM_DATA ( N_BH, C_USERID, N_ID ) VALUES (
2, 'cg143', 51);
INSERT INTO TB_USER_DZM_DATA ( N_BH, C_USERID, N_ID ) VALUES (
3, 'cg143', 77);
INSERT INTO TB_USER_DZM_DATA ( N_BH, C_USERID, N_ID ) VALUES (
4, 'cg143', 264);
范佩西_11 2008-11-03
  • 打赏
  • 举报
回复
本不想给你发出来的。但是看你那么着急,算了不跟你计较了
范佩西_11 2008-11-03
  • 打赏
  • 举报
回复
SQL> select b.N_ID, a.C_DZM, a.C_NAME, a.N_ID
2 from TB_SYSTEM_DZM_DD a, tb_user_dzm_data b
3 where substr(a.c_dzm, 1, 2) =
4 (select substr(a.c_dzm, 1, 2)
5 from TB_SYSTEM_DZM_DD a, tb_user_dzm_data b
6 where a.n_id = b.n_id
7 and b.c_userid = 'cg143')
8 ;

N_ID C_DZM C_NAME N_ID
------------------- ------------ -------------------------------------------------------------------------------- --------------------
2 110000 北京 2
2 110100 市辖区 3
2 110101 东城区 4
2 110102 西城区 5
2 110103 崇文区 6
2 110104 宣武区 7
2 110105 朝阳区 8
2 110106 丰台区 9
2 110107 石景山区 10
2 110108 海淀区 11
2 110109 门头沟区 12
2 110111 房山区 13
2 110112 通州区 14
2 110113 顺义区 15
2 110114 昌平区 16
2 110200 县 17
2 110224 大兴县 18
2 110226 平谷县 19
2 110227 怀柔县 20
2 110227 怀柔县 20

20 rows selected
hellonazx 2008-11-03
  • 打赏
  • 举报
回复
你太辛苦,根本不对。但也谢谢参与
YY_MM_DD 2008-11-03
  • 打赏
  • 举报
回复

--在自己机器上测试了下,可以通过,去试下吧。希望以后不要在说类似的话()。
select tt2.N_ID,tt1.C_DZM,C_NAME from TB_SYSTEM_DZM_DD tt1,
(select N_ID,C_DZM from TB_SYSTEM_DZM_DD
where N_ID in (select N_ID from TB_USER_DZM_DATA
where C_USERID='cg143')) tt2
where substr(tt1.c_DZM,1,3)=substr(tt2.c_DZM,1,3)

范佩西_11 2008-11-03
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 hellonazx 的回复:]
不行,报ora-01427错误。急死我了
tb_system_dzm_dd 中c_dzm的特点是两位表示一层,
省级代码为后四位一定是0000
市级代码为后两位一定是00
六位代码表示 省/市/县三级

[/Quote]所以说你没说清楚。哈哈,还怪人坚决不赚这个分了。别说你这么简单的SQL太复杂十倍我觉得都没问题不是吹牛B,你阿。只怪你不会说话。
hellonazx 2008-11-03
  • 打赏
  • 举报
回复
不行,报ora-01427错误。急死我了
tb_system_dzm_dd 中c_dzm的特点是两位表示一层,
省级代码为后四位一定是0000
市级代码为后两位一定是00
六位代码表示 省/市/县三级
laoding_dmf1982 2008-11-03
  • 打赏
  • 举报
回复
C_DZM的前三位应该是北京市的编码吧
SELECT a.n_id, b.*
FROM tb_user_dzm_data a, tb_system_dzm_dd b
WHERE INSTR (b.c_dzm, (SELECT SUBSTR (b.c_dzm, 0, 3)
FROM tb_user_dzm_data a, tb_system_dzm_dd b
WHERE a.n_id = b.n_id AND a.c_userid = 'cg143')) = 1
AND a.c_userid = 'cg143'
hellonazx 2008-11-03
  • 打赏
  • 举报
回复
表结构
CREATE TABLE TB_SYSTEM_DZM_DD
(
N_ID NUMBER(19) NOT NULL,
C_DZM VARCHAR2(6 CHAR),
C_NAME VARCHAR2(100 CHAR),
C_INFO VARCHAR2(200 CHAR)
);
CREATE TABLE TB_USER_DZM_DATA
(
N_BH NUMBER(18),
C_USERID VARCHAR2(32 CHAR) NOT NULL,
N_ID NUMBER(18) NOT NULL
)
数据情况:
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
2, '110000', '北京', '全国');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
3, '110100', '市辖区', '市辖区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
4, '110101', '东城区', '北京市东城区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
5, '110102', '西城区', '北京市西城区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
6, '110103', '崇文区', '北京市崇文区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
7, '110104', '宣武区', '北京市宣武区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
8, '110105', '朝阳区', '北京市朝阳区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
9, '110106', '丰台区', '北京市丰台区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
10, '110107', '石景山区', '北京市石景山区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
11, '110108', '海淀区', '北京市海淀区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
12, '110109', '门头沟区', '北京市门头沟区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
13, '110111', '房山区', '北京市房山区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
14, '110112', '通州区', '北京市通州区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
15, '110113', '顺义区', '北京市顺义区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
16, '110114', '昌平区', '北京市昌平区');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
17, '110200', '县', '县');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
18, '110224', '大兴县', '北京市大兴县');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
19, '110226', '平谷县', '北京市平谷县');
INSERT INTO TB_SYSTEM_DZM_DD ( N_ID, C_DZM, C_NAME, C_INFO ) VALUES (
20, '110227', '怀柔县', '北京市怀柔县');

INSERT INTO TB_USER_DZM_DATA ( N_BH, C_USERID, N_ID ) VALUES (
1, 'cg143', 2);

现在要这两个表关联输出结果要求,当C_USERID=’cg143’时:

返回结果为:
TB_USER_DZM_DATA .N_ID TB_SYSTEM_DZM_DD.C_DZM TB_SYSTEM_DZM_DD.C_NAME TB_SYSTEM_DZM_DD.N_ID
2 110000 北京市 2
2 110100 市辖区 3
2 110101 东城区 4
......
2 110227 怀柔县 20

TB_USER_DZM_DATA .N_ID的字段数据来源于TB_SYSTEM_DZM_DD.N_ID 字段

牛人留牛印
YY_MM_DD 2008-11-03
  • 打赏
  • 举报
回复

--意思就是查TB_SYSTEM_DZM_DD表中和TB_USER_DZM_DATA 表(N_ID)对应C_Name所管辖的所有区域
--地区代码的前4位会一样吧,那就是'1001'代表北京,可能'1002'就是天津了,我的理解对?
select tt2.N_ID,tt1.C_DZM,tt1.C_NAME from tt1,
(select N_ID,C_Name from TB_SYSTEM_DZM_DD
where N_ID in select N_ID from TB_USER_DZM_DATA
and C_USERID='cg143') tt2
where substr(tt1,1,4)=sub(tt2,1,4)
hellonazx 2008-11-03
  • 打赏
  • 举报
回复
水平不到,放弃正常。
TB_USER_DZM_DATA .N_ID的字段数据来源于TB_SYSTEM_DZM_DD.N_ID 字段,但若这两者等值关联肯定不对。
gdqsh 2008-11-03
  • 打赏
  • 举报
回复
没看懂你提的问题
范佩西_11 2008-11-03
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 hellonazx 的回复:]
请能力一般的大虾,就不要在这里耽误你的时间了。
[/Quote]
自己给的数据那么少,还说别人能力一般。你直接说父子关系就行了。关联的字段你也不说。谁知道你想要什么结果
,就次打住不写了才15分。
hellonazx 2008-11-03
  • 打赏
  • 举报
回复
请能力一般的大虾,就不要在这里耽误你的时间了。
加载更多回复(10)

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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