<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="一对多的几个表，查询主表的信息和主表在子表中的记录条数" id="card1">
<p> 游客</p><p>
标题:一对多的几个表，查询主表的信息和主表在子表中的记录条数<br/>
正文:<br/>
<br/>                    SyntaxHighlighter.config.clipboardSwf = ’/Js/Syntax/clipboard.swf’;<br/>                    SyntaxHighlighter.all();看标题可能看的不明白。举例子来说A表是班级表，字段：ID=班级编号，Name=班级名字B表是学生表，字段：ID=班级编号，SID= 学生编号。就是查询班级表的全部信息，然后也要查询出来班级表对应的学生数量。在群里问问，总结有两个比较简单，清晰的方法第一个方法（城主）：select a.*, (select count(*) from b where b.ID=a.id) as 学生数量 from a这个看着比较清楚简单，第二个方法（泪吻星痕）：select a.*,xx.人数 <br/>from a, (select b.ID,count(ID) as 人数 from b group by b.ID) xx <br/>where a.ID = xx.ID <br/>这个方法用到一个临时表，相当于是先构造一个临时表，然后用班 级表A和临时表做关联泪吻星痕推荐使用第二个方法，理由是关联查询快，他也做过测试。我目前忙项目，自己还没有测试比较两个性能但是其实两个sql查询的结果是不一样的使用第一个方法，查询出来班级信息和班级对应的学生数量。即使学生数量是0也是有班级信息的记录第二个方法确如果学生数量为0的话，就不会显示对应的班级信息。不过这个是小问题只要修改join关系就可以select a.*,xx.人数 <br/>from a left join (select b.ID,count(ID) as 人数 from b group by b.ID) xx <br/>on a.ID = xx.ID下边就实际应用一下：需求：一个相册表，一个图片表，一个评论表，建一个相册表的视图实现：相册表字段+图片个数+图片封面+评论个数，（显示相册列表需要的统计信息）实现：SELECT a.AlbumName, a.UserID, a.ID, a.Competence, a.CreateTime, a.Remark, a.LookQuestion, a.LookPwd, b.photocount, c.comme<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=145&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=145&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=145&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=145&amp;Page=2">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=145">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=145">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>