Изменение порядка результатов SQL-запросов для правильного отображения - PullRequest
1 голос
/ 29 февраля 2012

У меня есть результат определенного запроса, который я должен отобразить в элементе управления List на моей веб-странице.

Результат запроса 1:4 items in descending orderРезультат запроса 2:Top 1 result

На самом деле мне нужно отобразить первый результат из первого запроса, первый результат из второго запроса, а затем оставшиеся три из результатов первого запроса.

Сначала я подумалрасположить строки, но это не представляется возможным в ItemTemplate элемента управления данными, я полагаю, поскольку отдельные строки не могут быть изменены.

Должен ли я написать свой запрос в некоторой форме, которую я даю результат впорядок, который даст правильный порядок элементов, которые будут отображаться?Например:Take the first result from top 4 item +Find the second result +Three items (minus the top one already that has been already extracted)

Есть предложения?

РЕДАКТИРОВАТЬ

1st class: (has 4 student)

Tom (Has highest score)
Rex (Hss second highest score)
Rambo (HAs 3rd highest score)
Betty (Has least score)

2nd class: (has 1 student)

Spooky (Has the highest score)

Required result order in DataControl:

Tom
Spooky
Rex
Rambo
Betty

Ответы [ 2 ]

1 голос
/ 29 февраля 2012
select top 1 Name ClassRank from Class1 order by Score desc
union 
select top 1 Name  ClassRank from Class2 order by Score desc
union
SELECT * FROM (
  SELECT ROW_NUMBER() OVER (ORDER BY Score desc) AS rownumber    
  FROM Class1
) AS foo
WHERE rownumber >1
1 голос
/ 29 февраля 2012

Таким образом, вы сможете поставить первый из первого выбора и первый из второго и остальные 2 из первого выбора;

Первый запрос возврата:

public DataTable query1()
{
              DataTable dt = new DataTable();

                #region YOUR SQL1

                qs.Execute();
                dt = qs.Return;

                return dt1;
}

public DataTable query2()
{
              DataTable dt = new DataTable();

               #region YOUR SQL2

                qs.Execute();
                dt = qs.Return;

                return dt2;
}

Вам следует создать формат Data State таблицы представления состояния, точно такой же, как ваш DataTable Return from Slect. ПРИМЕР:

public DataTable _VS_RETURN_FORMAT
{
    get
    {
        if (ViewState["_VS_RETURN_FORMAT] == null)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("field1");
            dt.Columns.Add("field2");

            ViewState["_VS_RETURN_FORMAT"] = dt;
        }
        return (DataTable)ViewState["_VS_RETURN_FORMAT"];
    }
    set
    {
        ViewState["_VS_RETURN_FORMAT"] = value;
    }
}

Вы должны иметь возможность контролировать результат с датой с помощью DataRow. Exemple:

         DataTable dt1 = new DataTable();
        DataTable dt2 = new DataTable();

            dt1 = SelectQuery1();
            dt2 = SelectQuery2();


            //Create a new DataRow  Like  your ViewState
            DataRow dr = _VS_RETURN_FORMAT;


            //Adding  to the fields the value that your need 

            dr["field1"] = dt1.Row[0][0];
            dr["field2"] = dt1.Row[0][1];


            _VS_RETURN_FORMAT.Rows.Add(dr);

            dr["field1"] = dt2.Row[0][0];
            dr["field2"] = dt2.Row[0][1];

            _VS_RETURN_FORMAT.Rows.Add(dr);

            dr["field1"] = dt1.Row[1][0];
            dr["field2"] = dt1.Row[1][1];

            _VS_RETURN_FORMAT.Rows.Add(dr);

            dr["field1"] = dt1.Row[2][0];
            dr["field2"] = dt1.Row[2][1];

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