Avatar billede andersbl Nybegynder
19. juni 2010 - 13:25 Der er 5 kommentarer og
1 løsning

lille SQL problem haster !

Hej Eksperter
Mit problem er den skal have alle shifttyper med som ikke er 0 og hvis det er shifttype 1 skal der OGSÅ tjekkes på om point >= 4, ellers skal point ignoreres.

--MYSQL KODE
FROM users3
WHERE birth !=  '0000-00-00 00:00:00'
AND firstname !=  ''
AND lastname !=  ''
AND participation =1
AND shifttype !=0
OR (shifttype =1 THEN POINT >=4)
Avatar billede erikjacobsen Ekspert
19. juni 2010 - 13:49 #1
Hvis jeg forstår dig korrekt så skal sidste linie være

AND (shifttype!=1 OR POINT >=4)
Avatar billede andersbl Nybegynder
19. juni 2010 - 14:02 #2
Tror ikke helt du forstår mig.
Hvis SHIFTTYPE=1 skal der tjekkes på om de har flere end 4 POINT, ellers skal der ikke tjekke for POINT.
Avatar billede erikjacobsen Ekspert
19. juni 2010 - 14:11 #3
Ok, men det er vel også det jeg skriver.
Avatar billede andersbl Nybegynder
19. juni 2010 - 15:23 #4
VIRKER HELT PERFEKT.

Kan dog ikke forstå hvorfor SHIFTTYPE 1 kommer med, da der er en WHERE betingelse med SHIFTTYPE != 1. Kan heller ikke heltforstå hvorfor du skriver OR i mellem, pga. Det netop kun er SHIFTTYPE 1 skal skal bruge POINT.

Du må gerne prøve forklarer det og sende et svar..

SELECT *
FROM users2
WHERE birth !=  '0000-00-00 00:00:00'
AND firstname !=  ''
AND lastname !=  ''
AND address !=  ''
AND zipcode !=  ''
AND email !=  ''
AND participation =1
AND shifttype !=0
AND ( shifttype !=1 OR POINT >=28 )
AND user_id =0
Avatar billede erikjacobsen Ekspert
19. juni 2010 - 15:30 #5
Ingen svar, jeg samler slet ikke på point. Svar selv, accepter eget svar.

Ok, den gør jo bare det der står. Hvis jeg lige tager den oprindelige

              ...
Linie 1:  AND shifttype !=0
Linie 2:  AND (shifttype!=1 OR POINT >=4)

Hvis shifttype er 0 skal den ikke med. Det klares af linie 1.
Hvis shifttype ikke er 0 og ikke er 1 skal den med. Her hjælper både linie 1 og 2.
Hvis shifttype er 1, så er shifttype!=1 falsk, og derfor skal vi kigge på POINT >=4, for at beregne den anførte OR. Kun hvis det sidste er opfyldt kommer den med.

Så det er vel det du be'r om, og hvis det også virker så er det vel det .... Bevares, der er sikkert også andre måder.
Avatar billede andersbl Nybegynder
19. juni 2010 - 15:48 #6
Præcis det jeg skal bruge. Det jeg ikke forstod var at AND (shifttype!=1 OR POINT >=4).  Jamen selvfølgelig, nu forstår jeg det.

Tak for forklaringen, super hjælp..
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