sql多表查询
有两个表关联.表A:
id name tel
1 a001 123456
2 a002 234567
3 a003 345678
4 a004 456789
表B:
ID Cateid NAME Tel
1 1 a001 123456
2 1 a002 234567
3 1 a003 345678
4 1 a004 456789
5 2 b001 123456
6 2 c001 234567
7 3 d001 123456
8 4 e001 123456
表B的CATEID关联表A的ID.即cateid=id
现要查询表A和表B的数据.比如查询电话包含有字符"123".只要表A或表B包含就显示出来.但只显示表A的数据
Sql=""
Sql=Sql&"Tel like '%"&skey&"%' or exists(select * from [Database2] where Tel like '%"&skey&"%' and Database.id=Cateid)"
Sql="select * from [Database] where "&sql&" order by ID desc"
这样的格式对吗?
因为我这样写的时间.每次查询都很慢.每次都差不多要分钟以上
[[i] 本帖最后由 czdiao 于 2008-7-3 12:02 编辑 [/i]] 先把两个表左外连接起来.再查找匹配的数据.但只显示A表的数据,这个应该如果找出B中有匹配.就显示B的cateid引用的父表对应的数据
[code]
select a.*
from
(select * from 表A) a left join (select * from 表B) b on a.id=b.Cateid
where a.tel like '%sky%' or b.Tel like '%sky%'
[/code] select a.* from a left join b on(a.id = b.Cateid) where a.tel like '%skey%' or b.Tel like '%skey%'
楼上的查询结果怎么左联合? 不左联的话不是表B没有记录表A就不显示了
回复 wuleying 在 3# 的帖子
select * from 表A返回的结果集也是一个表,所以效果与你的是一样的.只是我习惯这样写.因为经常可能要加条件! 学习了...虽然我知道确实应该用关联..
但是没想过应该怎么加上WHERE 哈哈..谢谢各位帮忙.现在查起来速度快多了.:)
页:
[1]