Avatar billede johny Nybegynder
12. marts 2008 - 12:48 Der er 6 kommentarer og
2 løsninger

WHERE på en SUM funktion

Er det ikke muligt at bruge en SUM funktion i en WHERE clause?

Her er lige et eksempel på hvad det er jeg gerne vil:
SELECT
  spots.spotid,
  SUM(IF(spots.voided=0,1,0)) AS "numbers"
FROM
  free_spots
INNER JOIN
  spots
ON
  free_spots.spotid = spots.spotid
WHERE
  free_spots.occupied = 1 AND
  numbers = 0
GROUP BY
  spots.spotid

Hvis det ikke kan lade sig gøre, er der så en anden måde jeg kan limite det på, så jeg kun får de spotid'er retur som jeg rent faktisk skal bruge, i stedet for at få samtlige spotid'er udskrevet (hvilket er hvad der sker hvis jeg fjerner "AND number = 0").
Avatar billede fennec Nybegynder
12. marts 2008 - 13:17 #1
Det skal i en having clause

SELECTspots.spotid, SUM(IF(spots.voided=0,1,0)) AS numbers
FROM  free_spots INNER JOIN spots ON free_spots.spotid = spots.spotid
WHERE free_spots.occupied = 1
having SUM(IF(spots.voided=0,1,0)) = 0
GROUP BY spots.spotid
Avatar billede johny Nybegynder
12. marts 2008 - 13:45 #2
Hmm, den brokker sig over syntax?

SELECT spots.spotid, SUM( IF( spots.voided =0, 1, 0 ) ) AS numbers
FROM free_spots
INNER JOIN spots ON free_spots.spotid = spots.spotid
WHERE free_spots.occupied =1
HAVING SUM( IF( spots.voided =0, 1, 0 ) ) =0
GROUP BY spots.spotid
LIMIT 0 , 30

MySQL returnerede: Dokumentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY spots.spotid
LIMIT 0, 30' at line 1
Avatar billede recli Nybegynder
12. marts 2008 - 14:00 #3
Du skal også lige flytte rundt på et par linjer:

HAVING kommer efter GROUP BY

  /Lars
Avatar billede johny Nybegynder
12. marts 2008 - 14:57 #4
Ah, der var den! :) Mange tak!

Hvordan klarer jeg lige den med points så? 50/50? Eller hvad er kotumen herinde?
Avatar billede fennec Nybegynder
12. marts 2008 - 15:30 #5
Det er helt op til dig at bestemme hvordan du vil fordele. Men en 50/50 er ikke unormal. Tror dog primært det er fordi mange ikke ved at point kan deles anderledes. Hvis man bare acceptere svar fra flere personer, fordeler E nemlig selv point lige (dejlig nemt).

De fleste af os herinde er faktisk også ligeglade med point. Det er kun en ekstra sjov detalje, så point antal/fordeling betyder ikke noget. Eneste som kan gøre folk sure, er hvis spørgeren tager sine point selv.

.o) <-- One Eyed Jack
Avatar billede johny Nybegynder
12. marts 2008 - 15:36 #6
@fennec: Tænkte mere om der var en standard fordeling når 1 person havde givet et løsningsforslag med én fejl, som ellers var korrekt, og en anden person så retter den fejl, om man anså rettelsen for en del af svaret normalt, eller blot en kommentar? Var bare så jeg ikke trådte nogen over tærene.. :)

Mange tak for hjælpen i hvert fald! :) Jeg venter lige med pointfordelingen til recli har smidt en kommentar/svar også...
Avatar billede recli Nybegynder
13. marts 2008 - 08:39 #7
Hej Johny

Giv bare pointene til fennec. Han havde jo det rigtige svar. Og jeg er sådan set også lidt lige glad med pointene. Det er rarere/vigtigere at få en pæn tilbagemelding fra den, man hjælper :-)

  /Lars
Avatar billede johny Nybegynder
13. marts 2008 - 08:50 #8
Så håber jeg at min tilbagemelding har været pæn nok. :) Og så har jeg givet dig en symbolsk del af pointene. ^^

Tak for hjælpen begge to, så lærte jeg endnu en ny kommando.. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester