select多表查询问题
我要做的是一个通信录.
有三个表
Appuser 用户表
linkgroup 联系人分组表
linkman 联系人表
一个用户有多个联系人分组,一个联系人分组有多个联系人
我现在想实现,
假设我是用户A
我有三个联系人分组
当我输入 139 点击查询,那么我就要查询出我三个分组里的联系人里所有数据为139的记录, 并且还要能显示哪条记录在哪个分组里
再问个菜鸟问题哦, 传两个变量 <a href=aaa.asp?id= <%=rs( "id ")%> &name= <%=rs( "name ")%> 是不是这样写的呀
各位帮下小弟,先谢啦
------解决方案--------------------Select LinkMan.*,LinkGroup.Name From LinkMan,LinkGroup Where (LinkMan.Phone Between 13900000000 and 14000000000 Or LinkMan.Mobile Between 13900000000 and 14000000000) And LinkGroup.UserID=LinkMan.ID And LinkGroup.UserID=用户ID
------解决方案--------------------你的linkman和linkgroup表没有关联,我在linkgroup表里加了个字段GID,与linkgourp的ID关联:
SELECT g.name,
m.name,
m.phone,
m.mobile
FROM Appuser as u,
linkgroup AS g,
linkman as m
WHERE u.username = 'zealot '
&& u.ID = g.userid
&& g.ID = m.GID
&& ( m.phone like '%139% '
|| m.mobile like '%139% '
);
------解决方案--------------------两个name没有区分,你手动加个别名就行了
------解决方案--------------------先把表关联加上,自然你就会查询了
------解决方案--------------------修改:
SELECT g.name as groupname,
m.name as linkman,
m.phone,
m.mobile
FROM Appuser as u,
linkgroup AS g,
linkman as m
WHERE u.username = 'A '
&& u.ID = g.userid
&& g.ID = m.groupid
&& ( m.phone like '%139% '
|| m.mobile like '%139% '
);
------解决方案--------------------SELECT A.name as groupname,
B.name as linkman,
B.phone,
B.mobile
FROM Appuser as C,
linkgroup AS A
linkman as B
WHERE C.username = 'A '
AND C.ID = A.userid
AND A.ID = B.groupid
AND ( B.phone like '%139% '
OR B.mobile like '%139% '
);
------解决方案--------------------linkman(联系人表)
中加个字段为 所属分组(groupid)
linkman(联系人表) 跟上2个表就没什么关系, 必须建立关系关联查询!
------解决方案--------------------表设计存在问题````应该在联系人表加一列 linkgroupID --所属分组
查询代码如下`
SELECT * FROM linkman WHERE linkgroupID IN (SELECT id FROM 联系人分组表 WHERE id=(SELECT id FROM WHERE username= '用户A ') ) AND mobile LIKE '%139% ';
------解决方案--------------------收集了点Sql的知识
http://www.chinaitbbs.com.cn/board.aspx?boardid=29
------解决方案--------------------建个视图 不是更简单