Как я могу получить максимальное значение поля с именем в этой записи?

Как вытащить выбранные поля записи из базы данных доступа и поместить их в метку? Это то, что у меня есть до сих пор:

Using conn As New OleDbConnection(Get_Constring)

conn.Open()

Using cmd As OleDbCommand = conn.CreateCommand
    If cb_Stat.Text = "Top Scorer" Then
        cmd.CommandText = "SELECT MAX(Goals) FROM PlayerDatabase"
        Label1.Text = cmd.ExecuteScalar
    End If

End Using

conn.Close()

Завершить использование

Что происходит, так это то, что максимальное количество голов, забитых игроком из базы данных игроков, помещается в строку, которая равна 10. Как я могу заставить ее также извлекать данные из полей «Имя» и «Фамилия» той же записи и отображать их как « Джон Доу 10 дюймов вместо просто 10


person dave    schedule 25.01.2015    source источник


Ответы (2)


Вы можете использовать order by и получить только одну строку. Стандартный метод ANSI:

SELECT p.*
FROM PlayerDatabase p
ORDER BY goals DESC
FETCH FIRST 1 ROW ONLY;

Не все базы данных поддерживают последнее предложение. Некоторые используют select top 1. Другие limit 1, а некоторые еще более загадочны.

person Gordon Linoff    schedule 25.01.2015

Вместо использования Max используйте order by плюс top 1, чтобы получить игрока, набравшего максимальное количество goals.

Затем объедините Forename, Surname, Goals столбцов. Попробуй это.

SELECT Top 1 Forename &" "& Surname &" "& cast(Goals as varchar(10)) 
FROM PlayerDatabase
order by Goals desc
person Pரதீப்    schedule 25.01.2015
comment
Я изменил свой исходный оператор SQL на то, что вы предложили, и теперь я получаю сообщение об ошибке в строке Label1.Text = cmd.ExecuteScalar. Ошибка: в System.Data.dll произошло необработанное исключение типа «System.Data.OleDb.OleDbException». - person dave; 25.01.2015