日期:2014-05-17  浏览次数:20834 次

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
------解决方案--------------------
建个视图 不是更简单