Jag behöver få ut en urlen till en bild ur en databas. Har en sida där man kan rösta på bilder. Hur får jag ut den som är mest populär.
Tänker mig att man kan använda "MAX(vote) as [max_vote]...
Jag får dock inte till det när jag ska använda flera max i samma fråga.
Sorteringen ska vara följande:
- MAX(vote) as [max_vote]
- MAX(vote_times) as [max_vote_times]
- MAX(file_view_number) as [max_file_views]
Sedan spelar det inte någon roll om det finns flera bilder som matchar, bara jag får ut en av dessa.
Kan man skriva något liknande:
sql = "SELECT MAX(vote) as [max_vote], MAX(vote_times) as [max_vote_times], MAX(file_view_number) as [max_file_view_times], file_name FROM T_picture_stats WHERE name = 'Mattias Nordin"
Microsoft JET Database Engine error '80040e21'
You tried to execute a query that does not include the specified expression 'file_name' as part of an aggregate function.
/tab_top_list/show_top_list.asp, line 135
Varför göra det svårt när man kan göra det på annat sätt?
sql = "SELECT TOP 1 * FROM T_picture_stats WHERE name = 'Mattias' ORDER BY vote DESC, vote_times DESC, file_view_number DESC"
aasahMedlem sedan mars 20034 471 inlägg Re: Multippla MAX i en fråga
mattiasnordin skrev:
.... Kan man skriva något liknande:
sql="SELECT MAX(vote) as [max_vote],
MAX(vote_times) as [max_vote_times],
MAX(file_view_number) as [max_file_view_times], file_name
FROM T_picture_stats WHERE name = 'Mattias Nordin"
Om du vill ha ut värdena så bort med [, ]. Alltså:
SELECT MAX(vote) as max_vote,
MAX(vote_times) as max_vote_times,
MAX(file_view_number) as max_file_view_times, file_name
FROM T_picture_stats WHERE name = 'Mattias Nordin'
Du verkar sakna den stängande ':n efter Nordin också. Först stängs strängen med ', sedan SQL-uttrycket med ".
@ndersMedlem sedan juni 200032 969 inlägg Använder man dylika funktioner i sin SQL-fråga måste man ha med alla andra fält i GROUP BY-instruktionen i frågan.
Mvh
Vad menas med "group by" ?
Engine^Medlem sedan dec. 20003 887 inlägg GROUP BY är en sorts DISTINCT lite enkelt beskrivet. De fält du anger i GROUP BY kommer att göra så att din SELECT endast återger ett resultat per de fält som har samma värden... tänk att du har en tabell med följande värden
[u]intA[/u] [u]intB[/u] [u]intC[/u]
1 1 1
1 1 2
2 1 3
2 1 3
2 2 4
2 2 4
2 2 5
Då kommer
SELECT intA, intB, intC FROM tabell GROUP BY intA, intB, intC
att ge dig resultatet
[u]intA[/u] [u]intB[/u] [u]intC[/u]
1 1 1
1 1 2
2 1 3
2 2 4
2 2 5
Så din fråga skulle kunna se ut så här
SELECT Max(vote) AS max_vote, Max(vote_times) AS max_vote_times, Max(file_view_number) AS max_file_view_times, file_name
FROM T_picture_stats
WHERE name = 'Mattias Nordin'
GROUP BY file_name
För varje fält du vill ha ut i din SELECT måste du ange detta fält i GROUP BY delen också.
Tack. Fint forum det här !!!