请问两个表联合查询的问题...

BILLSJONE 2006-08-10 09:26:53
表1
id field1 field2
1 A B

表2
code remark
A 足球
B 蓝球
==========================
要显示的是表1的信息,但A,B要换成中文意思足球这些,
set rs=conn.execute("select * from 表1")
do while not rs.eof
aa=conn.execute("select remark from where code='"&rs("field1")&"'")(0)
bb=conn.execute("select remark from where code='"&rs("field2")&"'")(0)
rs.movenext
loop
我这样来获得A和B的中文意思速度好慢啊,怎么两个表联合用一条sql就可以了?谢谢





...全文
214 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
BILLSJONE 2006-08-11
  • 打赏
  • 举报
回复
謝謝,可以,速度比原來快好多,用最後isnull的那個了
being21 2006-08-11
  • 打赏
  • 举报
回复
看看!!!呵呵~~学学!!!呵呵!!!
jacky_majia_001 2006-08-11
  • 打赏
  • 举报
回复
up
fcuandy 2006-08-10
  • 打赏
  • 举报
回复
如果A在t2不存在


SELECT a.id,ISNULL(b.remark,a.field1),ISNULL(c.remark,a.field2)
FROM t1 a
LEFT JOIN t2 b
ON a.field1=b.code
LEFT JOIN t2 c
ON a.field2=c.code
可能有手误
fcuandy 2006-08-10
  • 打赏
  • 举报
回复
连两次表就可以了,最优写法

SELECT a.id,b.remark,c.remark
FROM t1 a
INNER JOIN t2 b
ON a.field1=b.code
INNER JOIN t2 c
ON a.field2=c.code
可能有手误

也就是3樓那種寫法.
BILLSJONE 2006-08-10
  • 打赏
  • 举报
回复
还有一个问题明天一起试,
就是如果A在表2已经不存在了,就是可能过时被删除掉了,
那么就直接取值A,只有关联到的才取中文名,
liangpei2008 2006-08-10
  • 打赏
  • 举报
回复
1.速度会不会快?一试就知道了,应该会比你的方法快一些
2.是否有扩展性?
SELECT A.ID,
FIELD1=(SELECT REMARK FROM @T1 WHERE CODE=A.FIELD1),
FIELD2=(SELECT REMARK FROM @T1 WHERE CODE=A.FIELD2),
FIELD3=(),
FIELD4=()
FROM @T A
就可以了!
有问题明天试了之后再提!
BILLSJONE 2006-08-10
  • 打赏
  • 举报
回复
要明天才可以试,这样速度会快不?表1还有field3,field4同样是存ABCDEF这些code值的哦
liangpei2008 2006-08-10
  • 打赏
  • 举报
回复
也可以这样
DECLARE @T TABLE(ID INT,FIELD1 CHAR,FIELD2 CHAR)
INSERT @T SELECT 1,'A','B'
--
DECLARE @T1 TABLE(CODE CHAR,REMARK VARCHAR(20))
INSERT @T1 SELECT 'A','足球'
UNION ALL SELECT 'B','蓝球'

SELECT A.ID,B.REMARK AS FIELD1,C.REMARK AS FIELD2
FROM @T A
INNER JOIN @T1 B
ON A.FIELD1=B.CODE
INNER JOIN @T1 C
ON A.FIELD2=C.CODE
liangpei2008 2006-08-10
  • 打赏
  • 举报
回复
--这个意思?
DECLARE @T TABLE(ID INT,FIELD1 CHAR,FIELD2 CHAR)
INSERT @T SELECT 1,'A','B'
--
DECLARE @T1 TABLE(CODE CHAR,REMARK VARCHAR(20))
INSERT @T1 SELECT 'A','足球'
UNION ALL SELECT 'B','蓝球'

SELECT A.ID,
FIELD1=(SELECT REMARK FROM @T1 WHERE CODE=A.FIELD1),
FIELD2=(SELECT REMARK FROM @T1 WHERE CODE=A.FIELD2)
FROM @T A

34,587

社区成员

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

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