Ⅰ sql的一对多,多对一,一对一,多对多什么意思
1、一对多:比如说一个班级有很多学生,可是这个班级只有一个班主任。在这个班级中随便找一个人,就会知道他们的班主任是谁;知道了这个班主任就会知道有哪几个学生。这里班主任和学生的关系就是一对多。
2、多对一:比如说一个班级有很多学生,可是这个班级只有一个班主任。在这个班级中随便找一个人,就会知道他们的班主任是谁;知道了这个班主任就会知道有哪几个学生。这里学生和班主任的关系就是多对一。
3、一对一:比如说一个班级有很多学生,他们分别有不同的学号。一个学生对应一个学号,一个学号对应一个学生;通过学号能找到学生,通过学生也能得到学号,不会重复。这里学生和学号的关系就是一对一。
4、多对多:比如说一个班级有很多学生,他们有语文课、数学课、英语课等很多课。一门课有很多人上,一个人上很多门课。这里学生和课程的关系就是多对多。
Ⅱ sql 一对多统计查询
借一下1L的语句
select u.id,u.niceName,u.imei,u.address,u.mobile,v.次数
from users as u ,
(select count(1) 次数,imei from reback Where [time]>'2012-11-06'
and [time]<'2012-11-07' group by imei ) v
where v.imei = u.imei
order by v.次数 desc
然后顺便一提,4000w的表,那么time、imei两列都要加索引,还有users表中的imei也要加索引
Ⅲ sql如何一对多联合查询
sql 语句是这样写:
sql="select time,content,b.classname from record a left join class b on a.class_id=b.id"
下面是在ASP页面用来显示的:(创建那个与数据连接的对象不用写了吧)
<TABLE>
<%
set rs=conn.execute(sql) 执行上面的语句
do while not rs.eof
%>
<TR>
<TD><%=rs("time")%></TD>
<TD><%=rs("content")%></TD>
<TD><%=rs("classname ")%></TD>
</TR>
<%
rs.movenext
loop
%>
</TABLE>
如果你是oracle中:
select 人名,sum(sale) from (select a.id,a.sale,b.人名 from s a,p b where a.who=b.id(+)) group by 人名
在sql 和access:
select 人名,sum(sale) from (select a.id,a.sale,b.人名 from s a left join p b on a.who=b.id(+)) group by 人名
其中 a,b 是表s,表p的别名
Ⅳ sql 一对多的查询
你怎么俩table1,后一个叫table2吧
执行以下语句
selectt1.考试学号,t1.科目,t2.考试成绩
from
(selecta.科目,a.科目ID,b.考试学号
from
(select科目,科目IDfromtable1)asa,
(selectdistinct考试学号fromtable2)asb)ast1leftjoin
table2ast2ont1.科目ID=t2.科目IDandt1.考试学号=t2.考试学号
结果截图
下边还有几条没显示全,凑合看吧
Ⅳ sql 一对多查询
交给我吧,典型的交叉查询,行列转换
select s.StudentName,
(case r.Subject when '语文' then r.Math end) as 语文,
(case r.Subject when '数学' then r.Math end) as 数学,
(case r.Subject when '英语' then r.Math end) as 英语,
(case r.Subject when '物理' then r.Math end) as 物理,
(case r.Subject when '地理' then r.Math end) as 地理
from Student s,Results r
where s.StudentId=r.StudentId
能用的话记得给分哦~
Ⅵ SQL一对多查询问题
select t1.学号,t1.姓名,t1.性别,t2.科目,t2.成绩 from 总表 t1,分表 t2 where t1.学号=t2.学号 order by t1.学号
另你说的跨行显示如果是值相同就合并上下两个单元格的意思的话,是可以的,要在后台写代码合并单元格。
protected void GridView2_DataBound(object sender, EventArgs e)
{
int inArA;
int inArB;
int intspan;
string temp="",temp1="";
for (inArA = 0; inArA < GridView2.Rows.Count; inArA++)
{
GridViewRow _itm = GridView2.Rows[inArA];
intspan = 1;
temp = GridView2.Rows[inArA].Cells[0].Text;
#region IP不同导致出现两条记录时,开始合并
for (inArB = inArA + 1; inArB < GridView2.Rows.Count; inArB++)
{
temp1 = GridView2.Rows[inArB].Cells[0].Text;
if (String.Compare(temp, temp1) == 0)
{
intspan++;
//GridView2.Rows[inArA].Cells[0].RowSpan = intspan;//学号合并
//GridView2.Rows[inArA].Cells[1].RowSpan = intspan;//姓名合并
//GridView2.Rows[inArA].Cells[2].RowSpan = intspan;//性别合并
GridView2.Rows[inArA].Cells[3].RowSpan = intspan;//科目不合并
GridView2.Rows[inArA].Cells[4].RowSpan = intspan;//成绩不合并
//GridView2.Rows[inArB].Cells[0].Visible = false;
//GridView2.Rows[inArB].Cells[1].Visible = false;
//GridView2.Rows[inArB].Cells[2].Visible = false;
GridView2.Rows[inArB].Cells[3].Visible = false;
GridView2.Rows[inArB].Cells[4].Visible = false;
}
else
{
break;
}
}
#endregion
inArA = inArB - 1;
}
}
希望对你有帮助
Ⅶ sql一对多查询
select客户表.客户编号,nvl(stat.c,0)
from客户表
leftjoin(select客户编号,sum(商品价格)cfrom交易表groupby客户编号)statonstat.客户编号=客户表.客户编号
Ⅷ sql一对多的查询代码怎么查
代码如下:
SELECT a.trumbnail, b.url, c.url
FROM Goods a, Picture b, Picture c
WHERE a.picture=b.id AND a.picture=c.id