dbTalk Databases Forums  

problem with highscore

comp.databases.ms-sqlserver comp.databases.ms-sqlserver


Discuss problem with highscore in the comp.databases.ms-sqlserver forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
zuuperman
 
Posts: n/a

Default problem with highscore - 06-25-2007 , 05:59 AM






Hi folks

I have a little problem converting from an access database to the SQL
server
I need to have a highscore that shows the top 10 scores, grouped by
email.

In my access db i had this query:
"SELECT TOP 10 First(users.user_naam) AS FirstOfuser_naam,
First(users.user_voornaam) AS FirstOfuser_voornaam,
Max(scores.score_score) AS MaxOfscore_score FROM users, scores WHERE
scores.score_userid=[users].[user_id] GROUP BY users.user_email ORDER
BY Max(scores.score_score) DESC"

But in SQL Server, First isn't known, and without it, i get:
... is invalid in the select list because it is not contained in either
an aggregate function or the GROUP BY clause

How can i make it show the top 10 scores, but with no duplicates of
email.
ex:
SELECT users.user_naam, users.user_voornaam,scores.score_score,
users.user_email FROM users, scores WHERE scores.score_userid =
users.user_id

this is the query for selecting all

Someone knows a solution?

Thx


Reply With Quote
  #2  
Old   
Dan Guzman
 
Posts: n/a

Default Re: problem with highscore - 06-25-2007 , 08:19 AM






You might try substituting MIN (or MAX) for FIRST. This will return the
same result as long as user_naam and user_voornaam values are the same for a
given user_email value.

If user_naam and user_voornaam values differ for a given user_email, you'll
need to specify your requirements for which of those values should be
returned. If you really don't care, MIN/MAX will suffice but the values
might be different than the original Access query.

--
Hope this helps.

Dan Guzman
SQL Server MVP

"zuuperman" <nils.destoop (AT) gmail (DOT) com> wrote

Quote:
Hi folks

I have a little problem converting from an access database to the SQL
server
I need to have a highscore that shows the top 10 scores, grouped by
email.

In my access db i had this query:
"SELECT TOP 10 First(users.user_naam) AS FirstOfuser_naam,
First(users.user_voornaam) AS FirstOfuser_voornaam,
Max(scores.score_score) AS MaxOfscore_score FROM users, scores WHERE
scores.score_userid=[users].[user_id] GROUP BY users.user_email ORDER
BY Max(scores.score_score) DESC"

But in SQL Server, First isn't known, and without it, i get:
.. is invalid in the select list because it is not contained in either
an aggregate function or the GROUP BY clause

How can i make it show the top 10 scores, but with no duplicates of
email.
ex:
SELECT users.user_naam, users.user_voornaam,scores.score_score,
users.user_email FROM users, scores WHERE scores.score_userid =
users.user_id

this is the query for selecting all

Someone knows a solution?

Thx



Reply With Quote
  #3  
Old   
Roy Harvey
 
Posts: n/a

Default Re: problem with highscore - 06-25-2007 , 08:32 AM



I'm not entirely sure I understand the desired results, but you might
try something like this.

SELECT TOP 10
users.user_naam,
users.user_voornaam,
MAX(scores.score_score) as MaxScore,
users.user_email
FROM users
JOIN scores
ON scores.score_userid = users.user_id
GROUP BY users.user_naam,
users.user_voornaam,
users.user_email
ORDER BY MaxScore DESC

Roy Harvey
Beacon Falls, CT

On Mon, 25 Jun 2007 02:59:56 -0700, zuuperman <nils.destoop (AT) gmail (DOT) com>
wrote:

Quote:
Hi folks

I have a little problem converting from an access database to the SQL
server
I need to have a highscore that shows the top 10 scores, grouped by
email.

In my access db i had this query:
"SELECT TOP 10 First(users.user_naam) AS FirstOfuser_naam,
First(users.user_voornaam) AS FirstOfuser_voornaam,
Max(scores.score_score) AS MaxOfscore_score FROM users, scores WHERE
scores.score_userid=[users].[user_id] GROUP BY users.user_email ORDER
BY Max(scores.score_score) DESC"

But in SQL Server, First isn't known, and without it, i get:
.. is invalid in the select list because it is not contained in either
an aggregate function or the GROUP BY clause

How can i make it show the top 10 scores, but with no duplicates of
email.
ex:
SELECT users.user_naam, users.user_voornaam,scores.score_score,
users.user_email FROM users, scores WHERE scores.score_userid =
users.user_id

this is the query for selecting all

Someone knows a solution?

Thx

Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.