Har två tabeller Medlemmar och Resultat! Skriv så här istället: Hej Jenny. Testade det i går kväll men fick följande fel. Det fungerar bra i mssql men access brukar vara lite känsligare med parenteser. Kan också vara som så att Access inte klarar av ett AND villkor efter ON. Testa att sätta parenteser på olika ställen exempelvis: Testa också att göra en LEFT JOIN istället för INNER JOIN Hej igen Jenny,En klurig Access fråga i SQL Syntax?
Medlemmar
ID Räknare
Namn Text
Resultat
Nr Räknare
Spelare Tal
Omgang Tal
Resultat Tal
H_B Text
Serier Tal
Poang Tal
Lag Text
När man lagt upp olika resultat t.ex
1,2,5,775,H,4,4,H
1,2,6,850,H,4,4,A
2,5,6,780,H.4,4,A
Och sen vill få ut den sista omgångens resultat och snitt enl nedan kod så får jag med ett värde på Borta Snitt.
Fast jag tycker att jag i "WHERE" anget att den bara ska ta med resultat ur omgång 6.
Hoppas någon orkar ge sig på detta!!
<Code>
SELECT m.Namn, Round(Avg(IIf(resultat Is Null,0,resultat)/IIf(serier Is Null,1,serier)),1) AS Snitt, Sum(r.Serier) AS [Antal serier], (SELECT ROUND(AVG(resultat / serier),1) FROM resultat WHERE Spelare = ID AND H_B = 'H') AS Hemmasnitt, Sum(IIf(H_B='H',r.serier,0)) AS [Serier hemma], (SELECT ROUND(AVG(resultat / serier),1) FROM resultat WHERE Spelare = ID AND H_B = 'B' ) AS Bortasnitt, Sum(IIf(H_B='B',r.serier,0)) AS [Serier borta], Round(Sum(r.poang)/Sum(r.serier),2) AS Poängsnitt, Max(r.Resultat) AS Bästa, Min(IIf(serier=4,r.resultat,Null)) AS Sämsta
FROM Medlemmar AS m INNER JOIN Resultat AS r ON m.ID = r.Spelare
WHERE (((r.Omgang)=6))
GROUP BY m.Namn, m.ID
ORDER BY 8 DESC , 2 DESC;
</code>Sv: En klurig Access fråga i SQL Syntax?
<code>
INNER JOIN Resultat AS r ON m.ID = r.Spelare
AND (((r.Omgang)=6))
GROUP BY m.Namn, m.ID
</code>
Vet inte vad detta kallas så att du kan läsa mer om det, men med AND direkt efter ON fortsätter du villkoret för tabellen Resultat.Sv: En klurig Access fråga i SQL Syntax?
SQL-uttrycket innehåller flera kopplingar, vilket medför att frågeresultatet kan bli olika beroende på i vilken ordning kopplingarna utförs. Du kan skapa en särskild fråga för den första kopplingen och sedan lägga till frågan i SQL-uttrycket.
ON-satsen i JOIN-instruktionen är ofullständigt eller innehåller för många tabeller. Du kan skriva ON-satsen i ett WHERE-villkor.
Andra förslag?Sv: En klurig Access fråga i SQL Syntax?
<code>
INNER JOIN Resultat AS r (ON m.ID = r.Spelare
AND (((r.Omgang)=6)))
GROUP BY m.Namn, m.ID
</code>
<code>
(INNER JOIN Resultat AS r ON m.ID = r.Spelare
AND (((r.Omgang)=6)))
GROUP BY m.Namn, m.ID
</code>
<code>
(INNER JOIN Resultat AS r (ON m.ID = r.Spelare
AND (((r.Omgang)=6))))
GROUP BY m.Namn, m.ID
</code>Sv: En klurig Access fråga i SQL Syntax?
Sv:En klurig Access fråga i SQL Syntax?
Jag får fel värden ur min fråga och behöver ta bort AVG ur min SQL Sats. Men det fungerar inte med grupperingen då. Har du något förslag på hur jag kan klara av att få ut en rad liknande denna, fast utan:
ROUND(resultat/serier,1) SELECT medlemmar.Namn, Round(r.Resultat/r.Serier,1) AS Snitt, Sum(r.Serier) AS [Ant Serier], Round(IIf([H_B]='H',[resultat]/[serier],0),1) AS HSnitt, Round(IIf([H_B]='B',[resultat]/[serier],0),1) AS BSnitt, Round(Sum([r].[poang])/Sum([r].[Serier]),2) AS Poängsnitt, Max(r.Resultat) AS Bästa, Min(IIf([Serier]=4,[r].[resultat],Null)) AS Sämsta
FROM medlemmar INNER JOIN resultat AS r ON medlemmar.ID = r.Spelare
GROUP BY medlemmar.Namn, Round(IIf([H_B]='H',[resultat]/[serier],0),1), Round(IIf([H_B]='B',[resultat]/[serier],0),1), medlemmar.Namn, medlemmar.ID
ORDER BY 7 DESC , 2 DESC;