CASE functie - syntaxisfout

Status
Niet open voor verdere reacties.

Waldorf79

Gebruiker
Lid geworden
7 dec 2011
Berichten
29
Office versie
magDer
experten hier alom aanwezig, graag jullie hulp met uit te vissen wat er mis is met dit stukje code:
Ik krijg namelijk steeds een syntaxis-fout en mijns inziens zou dit toch ongeveer moeten kloppen? :eek:
Code:
SELECT 	[SCORES Query].Name,
	[SCORES Query].Nmb, 
	[SCORES Query].Date, 
	
	[SCORES Query]![Player 1 Score] AS [Player 1 WIN], 

	CASE 	[SCORES Query]![Player 1 Score] AS [Player 1 WIN], 
WHEN [SCORES Query]![Player 1 Score]>[SCORES Query]![Player 2 Score]
		AND [SCORES Query]![Player 1 Score]>[SCORES Query]![Player 3 Score]
		AND [SCORES Query]![Player 1 Score]>[SCORES Query]![Player 4 Score]
		AND [SCORES Query]![Player 1 Score]>[SCORES Query]![Player 5 Score]
		AND [SCORES Query]![Player 1 Score]>[SCORES Query]![Player 6 Score]
		AND [SCORES Query]![Player 1 Score]>[SCORES Query]![Player 7 Score]
		AND [SCORES Query]![Player 1 Score]>[SCORES Query]![Player 8 Score]
	then 1
	else 0,
end

	[SCORES Query]![Player 2 Score] AS [Player 2 WIN], 

	CASE 	[SCORES Query]![Player 2 Score] AS [Player 2 WIN], 
WHEN [SCORES Query]![Player 2 Score]>[SCORES Query]![Player 1 Score]
		AND [SCORES Query]![Player 2 Score]>[SCORES Query]![Player 3 Score]
		AND [SCORES Query]![Player 2 Score]>[SCORES Query]![Player 4 Score]
		AND [SCORES Query]![Player 2 Score]>[SCORES Query]![Player 5 Score]
		AND [SCORES Query]![Player 2 Score]>[SCORES Query]![Player 6 Score]
		AND [SCORES Query]![Player 2 Score]>[SCORES Query]![Player 7 Score]
		AND [SCORES Query]![Player 2 Score]>[SCORES Query]![Player 8 Score]
then1
		else 0,
end

FROM [SCORES Query]
ORDER BY [SCORES Query].Name;
 
Waar gebruik je deze code? Als dit een Access query is, dan klopt het inderdaad niet.
 
Ik gebruik dit effectief in een query, 't is te zeggen, dat probeer ik...

Wat is er dan zo fout?
Kan er geen case functie in een query zitten? of pak ik dit volledig verkeerd aan?
 
Laatst bewerkt:
Je kunt inderdaad geen CASE in een query gebruiken; je zult die moeten ombouwen naar een IIF functie.
 
Dus ombouwen naar een iff...
probleem is wel dat deze CASE de basis is, er zouden nog een pak andere argumenten in moeten komen en ik vrees dat ik daarmee het aantal geneste IFF's zou overschreiden...

Is er trouwens een goede reden waarom een CASE niet werkt in een query?
 
Bijvoorbeeld zo:
Code:
SELECT [Name],[Nmb], [Date], [Player 1 Score] AS [Player 1 WIN], [Player 2 Score] AS [Player 2 WIN],IIF([Player 1 Score]>[Player 2 Score];IIF([Player 1 Score]>[Player 3 Score];IIF([Player 1 Score]>[Player 4 Score];IIF([Player 1 Score]>[Player 5 Score];IIF([Player 1 Score]>[Player 6 Score];IIF([Player 1 Score]>[Player 7 Score];IIF([Player 1 Score]>[Player 8 Score];1;0);0);0);0);0);0);0) As  [Player 1 Points];IIF([Player 2 Score]>[Player 1 Score];IIF([Player 2 Score]>[Player 3 Score];IIF([Player 2 Score]>[Player 4 Score];IIF([Player 2 Score]>[Player 5 Score];IIF([Player 2 Score]>[Player 6 Score];IIF([Player 2 Score]>[Player 7 Score];IIF([Player 2 Score]>[Player 8 Score];1;0);0);0);0);0);0);0) As  [Player 2 Points] FROM [SCORES Query] ORDER BY [Name]
(Als ik 'm goed interpreteer ;) )
 
Die goede reden is: Access SQL kent geen CASE. Dan moet je ofwel IIF gebruiken, of als je daar niet mee uitkomt, SWITCH, of een Pass-through query gebruiken.
Je kunt uiteraard ook een functie maken die het gewenste resultaat oplevert. Overigens vermoed ik een slecht genormaliseerde tabel in je query ;)
 
Een tabel met de velden [Player 1 Score],[Player 2 Score],[Player 3 Score],[Player 4 Score], SCORES Query].[Player 5 Score],[Player 6 Score],[Player 7 Score],[Player 8 Score] is niet echt netjes genormaliseerd :)
 
Je code lijkt het in elk geval te doen :thumb:
Dus dit topic kan denk ik op slot. Alvast bedankt!

Dat het geheel niet echt netjes is, daar kan ik inkomen...
orde is niet echt mijn sterkste kant :eek:

Kan het zijn dat het niet mogelijk is om access betanden op te laden?
En dat er wel een vrij kleine uploadlimiet is voor zip-bestanden? 100 kb?

Anders had ik de db even gepost om je mening te vragen over het 'normaliseren', maar dat lukt dus niet.
Zipje is nl 428kB
 
Je kunt kijken of je de db kleiner kunt krijgen door hem eerst te comprimeren, en dan te zippen. Wordt hij dan nog niet veel kleiner, dan kun je hem met WinRar opsplitsen in brokken van 100kb. En anders kun je hem mailen naar octafish@live.nl. Dan zet ik 'm er wel bij (mag namelijk als redacteur 200kb posten).
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan