Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编写sql查询以从此表中选择记录_Sql_Ms Access_Vb6 - Fatal编程技术网

如何编写sql查询以从此表中选择记录

如何编写sql查询以从此表中选择记录,sql,ms-access,vb6,Sql,Ms Access,Vb6,在我的程序中,我生成了如下表: id Roll Subject Marks LetterGrade GradePoint 1 1 Physics 40 D 1 2 1 Chemistry 50 C 2 3 1 Mathematics 60 B 3 4 2 Physics 40 D 1 5 2 Chemistry

在我的程序中,我生成了如下表:

id Roll Subject     Marks LetterGrade GradePoint

1  1    Physics     40    D           1

2  1    Chemistry   50    C           2

3  1    Mathematics 60    B           3

4  2    Physics     40    D           1

5  2    Chemistry   50    C           2

6  2    Biology     59    C           2
我使用VB6和MS Access作为数据库。现在我想在Datagrid中显示如下内容:

Roll Sub     Marks LetterG Gp Sub        Marks LetterG Gp Sub            Marks LetterG  Gp GPA  GPAExcl

1    Physics 40    D       1  Chemistry  50    C       2  Mathematics    60    B        3  2.00 1.5

2    Physics 40    D       1  Chemistry  50    C       2  Biology        59    C        2  1.5  1.5
多行多滚

每卷id最大的主题是附加主题。如果其Gp大于2,则添加GPA,GPAExcl仅包含前两个主题

因此,对于第1轮,GPA为
(1+2+1)/2=2.00
(数学中的Gp大于2且
3-2=1

GPAExcl是
(1+2)/2=1.5

对于第2卷,GPA和GPAExcl均为1.5

如何编写sql查询,以便获得这样的记录并在datagrid中显示


可以编写这样的查询吗?

在我看来,您需要使用数据列表而不是数据网格。DataList允许您指定RepeatColumns和RepeatDirection

在这种情况下,您似乎希望RepeatDirection是垂直的。然后你只需要计算出你想要多少列

我不确定您是否需要SQL有任何不同。这似乎是一个格式问题,而不是查询问题

好吧,我想我看错了。很抱歉。我现在明白了,你想要左边三门课的角色,然后右边三门课的角色

可能有几种方法可以解决这个问题。一种方法是使用两个中继器。这将创建表(您需要在中添加标题行)。如果每个角色没有相同数量的课程,则必须通过columnspan处理专栏

<asp:Repeater ID="repRoles" runat="server">
    <HeaderTemplate>
        <table>            
    </HeaderTemplate>
    <ItemTemplate>
        <tr>
            <td><%# Eval("Role") %></td>
            <asp:Repeater id="repCourses" runat="server">
                <ItemTemplate>
                    <td>
                        <%# Eval("Subject") %>
                    </td>
                    <td>
                        <%# Eval("Marks") %>
                    </td>
                    <td>
                        <%# Eval("LetterGrade") %>
                    </td>
                </ItemTemplate>
            </asp:Repeater>
        </tr>
    </ItemTemplate>
    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:Repeater>


您可以使用第一个中继器上的ItemDataBound事件,然后将适当的课程绑定到第二个中继器。

如果有更多的主题,该怎么办……当然有更多的主题,但我不能将它们全部写在这里。但是如果我知道如何处理这些,那么我可以处理更多。对吗?你得到答案了吗?如果是,请标记它,这将有助于缩短未答复列表。我以前没有使用数据列表。正如您所说的重复列,我还需要在重复列之后的末尾再添加两列。