http://blog.csdn.net/btbtd/archive/2007/01/12/1481562.aspx三级联动的数据库查询...(Access)
SELECT a.cat1id, a.cat1, IIf(b.cat2id,b.cat2id,0) AS cat2id, IIf(b.cat2,b.cat2,'无分类') AS cat2, IIf(c.cat3id,c.cat3id,0) AS cat3id, IIf(c.cat3,c.cat3,'无分类') AS cat3
FROM (sqCat1 AS a LEFT JOIN sqCat2 AS b ON a.cat1id=b.cat1id) LEFT JOIN sqCat3 AS c ON (b.cat1id=c.cat1id) AND (b.cat2id=c.cat2id)
UNION SELECT a.cat1id, a.cat1, IIf(b.cat2id,b.cat2id,0) AS cat2id, IIf(b.cat2,b.cat2,'无分类') AS cat2, 0 AS cat3id, '无分类' AS cat3
FROM (sqCat1 AS a LEFT JOIN sqCat2 AS b ON a.cat1id=b.cat1id) LEFT JOIN sqCat3 AS c ON (b.cat1id=c.cat1id) AND (b.cat2id=c.cat2id);
UNION SELECT a.cat1id, a.cat1, 0 AS cat2id,'无分类' AS cat2,0 AS cat3id, '无分类' AS cat3
FROM (sqCat1 AS a LEFT JOIN sqCat2 AS b ON a.cat1id=b.cat1id) LEFT JOIN sqCat3 AS c ON (b.cat1id=c.cat1id) AND (b.cat2id=c.cat2id);你再join 一个表就OK了, rs.GetString
var rs=new data();
rs.cmd="'select * from 1_cat_all', conn, 1";
var sStr=rs.GetString(false, false, true, "2,-1,'##','##@', 'empty'");
rs=null;晕了, 我都集成类了, 你自己消失理解吧...
SELECT a.cat1id, a.cat1, IIf(b.cat2id,b.cat2id,0) AS cat2id, IIf(b.cat2,b.cat2,'无分类') AS cat2, IIf(c.cat3id,c.cat3id,0) AS cat3id, IIf(c.cat3,c.cat3,'无分类') AS cat3
FROM (sqCat1 AS a LEFT JOIN sqCat2 AS b ON a.cat1id=b.cat1id) LEFT JOIN sqCat3 AS c ON (b.cat1id=c.cat1id) AND (b.cat2id=c.cat2id)
UNION SELECT a.cat1id, a.cat1, IIf(b.cat2id,b.cat2id,0) AS cat2id, IIf(b.cat2,b.cat2,'无分类') AS cat2, 0 AS cat3id, '无分类' AS cat3
FROM (sqCat1 AS a LEFT JOIN sqCat2 AS b ON a.cat1id=b.cat1id) LEFT JOIN sqCat3 AS c ON (b.cat1id=c.cat1id) AND (b.cat2id=c.cat2id);
UNION SELECT a.cat1id, a.cat1, 0 AS cat2id,'无分类' AS cat2,0 AS cat3id, '无分类' AS cat3
FROM (sqCat1 AS a LEFT JOIN sqCat2 AS b ON a.cat1id=b.cat1id) LEFT JOIN sqCat3 AS c ON (b.cat1id=c.cat1id) AND (b.cat2id=c.cat2id);你再join 一个表就OK了, rs.GetString
var rs=new data();
rs.cmd="'select * from 1_cat_all', conn, 1";
var sStr=rs.GetString(false, false, true, "2,-1,'##','##@', 'empty'");
rs=null;晕了, 我都集成类了, 你自己消失理解吧...
id,classid_1,classid_2,classid_3,classid_4俺的联动类需要 ID,文本 成对使用
不过如果没有的话 可以 xx as xx 生成
不过这个需要对SQL有一定的理解, 还是闪人, .....
MenuArr[2]="欧洲###德国|||欧洲###法国|||北美洲###美国|||北美洲###加拿大|||亚洲###中国" //洲名###国名|||...
MenuArr[3]="中国###北京|||中国###上海|||美国###华盛顿|||美国###纽约|||德国###柏林" //国名###城市名|||...
MenuArr[4]="北京###朝阳区|||上海###徐汇区|||广州###天河区|||纽约###曼哈顿区" //国名###城市名|||...
从数据库选出数据,然后组成类似的数组不就可以了?
你那里不会,不会写sql还是不会组装数据?
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<BODY>
<SELECT NAME="s1"><option>需要JavaScript才能正确显示</SELECT>
<SELECT NAME="s2"></SELECT>
<SELECT NAME="s3"></SELECT>
<SELECT NAME="s4"></SELECT>
<SCRIPT LANGUAGE="JavaScript">
<!--
//选择框的名字
selector = [ "s1", "s2", "s3", "s4" ];
//选择项: "名字", "值", 子选择
menu = [
"地球","1",
[
"中国","86",
[
"北京","BJ",
[
"--","1",null
],
"四川","SC",
[
"成都","28",null,
"乐山","",null,
"攀枝花","",null,
"自贡","",null,
"德阳","",null,
"绵阳","",null
]
],
"米国","1",
[
"加利福尼亚","CA",
[
"旧金山","1",null,
"洛杉矶","2",null
],
"华盛顿","WA",
[
"西雅图","seattle",null
]
]
],
"火星","2",
[
"大峡谷","86",
[
"小山丘","BJ",
[
"A地区","28",null,
"B地区","",null,
"C地区","",null
]
]
]
];
function wizz(level)
{
if( level == 0 )
a = menu;
else
{
str = "menu";
for( i=0; i<level; i++ )
str += "[" + (document.all[selector[i]].selectedIndex * 3 + 2) + "]";
a = eval(str);
}
if( a == null ) return;
s = document.all[selector[level]];
i = s.length;
while( i > 0 ) s.options[--i] = null;
while( i < Math.floor(a.length/3) )
s.options[i] = Option( a[i*3], a[i++*3+1] );
s.onchange = Function("wizz(" + (level+1) + ")");
wizz(level+1);
}
wizz(0);
//-->
</SCRIPT>
</BODY>
</HTML>
对于初学者有点难度,在哪位老大有空写写"sql"及组装数组的代码?
你如果确实搞不定, 把表数据用 ado recordset 选取所有数据, 然后用 save(sPath, 1) 选项保存为
ADTG 文件格式, 上传到某个地方, 俺下载下来弄
发到我 邮箱里:
[email protected]
sql="select * from ld group by classid_1,classid_2,classid_3"
rs.open sql,conn
dim ct_zhou,ct_guo,ct_sheng,ct_qu
dim str_zhou,str_guo,str_sheng,str_qudo while rs.eof
'对每条记录做分析,因为记录按顺序排列,所以当本记录所记载的值与上一条记录不同时,是新数据,记录入字符串,否则不记继续处理后续的数据。
if isempty(ct_zhou) then ct_zhou=rs(1)
if ct_zhou<>rs(1) then
ct_zhou=rs(1)
str_zhou=str_zhou+ct_zhou+"|||"
end if if isempty(ct_guo) then ct_guo=rs(2)
if ct_guo<>rs(2) then
ct_guo=rs(2)
str_guo=str_guo+ct_zhou+"###"+ct_guo+"|||"
end if if isempty(ct_sheng) then ct_sheng=rs(3)
if ct_sheng<>rs(3) then
ct_sheng=rs(3)
str_sheng=str_sheng+ct_guo+"###"+ct_sheng+"|||"
end if'对于最后一级实际可以直接组装字符串即可
if isempty(ct_qu) then ct_qu=rs(4)
if ct_qu<>rs(4) then
ct_qu=rs(4)
str_qu=str_qu+ct_sheng+"###"+ct_qu+"|||"
end if rs.next
loop
'输出
response.write "MenuArr[1]="+str_zhou
response.write "MenuArr[2]="+str_guo
response.write "MenuArr[3]="+str_sheng
response.write "MenuArr[4]="+str_qu
'结合你的数据库试一下吧
SELECT classid_1, classid_1, classid_2, classid_2, classid_3, classid_3, classid_4, classid_4
FROM yy;
保存名为: v_getCat2
下载: aj1.asp
http://files.myopera.com/btbtd/jscript_ss/test/aj1.7z看看这是不是你要的效果...
地址:http://community.csdn.net/Expert/topic/5300/5300171.xml?temp=.8182947