Как написать SQL-запрос, чтобы выбрать записи из этой таблицы - PullRequest
0 голосов
/ 23 июня 2011

В моей программе я сгенерировал таблицу вроде:

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

и более строк для большего количества Roll

Предмет с наибольшим идентификатором для каждого броска является дополнительным предметом. Если его Gp больше 2, то он добавляется с GPA, GPAExcl только с первыми двумя субъектами

То есть для Roll 1 GPA это (1+2+1)/2=2.00 (Gp в математике больше 2 и 3-2=1)

и GPAExcl - (1+2)/2=1.5

и для Roll 2 и GPA, и GPAExcl = 1,5

Как написать SQL-запрос, чтобы я мог получить такие записи и показать их в сетке данных

Можно ли написать такой запрос?

1 Ответ

0 голосов
/ 23 июня 2011

Мне кажется, что вам нужно использовать DataList, а не DataGrid.DataList позволяет вам указать RepeatColumns и RepeatDirection.

В этом случае кажется, что вы хотите, чтобы RepeatDirection был вертикальным.Затем вы просто выясните, сколько столбцов вы хотите.

Я не уверен, что вам нужно, чтобы SQL был другим.Кажется, это проблема формата, а не вопроса.

Хорошо, я думаю, что смотрел на это неправильно.Извини за это.Теперь я вижу, что вы хотите получить роль для всех трех курсов слева, а затем для всех курсов для этой роли справа.

Возможно, есть несколько способов справиться с этим.Одним из способов было бы использовать два повторителя.Это создаст таблицу (вам нужно добавить строку заголовка в).Если у вас не одинаковое количество курсов для каждой роли, вам придется позаботиться о столбцах с помощью columnpan.

<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 первого повторителя, чтобы затем связать соответствующийкурсы ко второму повторителю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...