Avatar billede htx98i17 Professor
16. august 2005 - 21:47 Der er 19 kommentarer og
1 løsning

select nivea 2

Jeg har en gruppestruktur hvor 'position' angiver hvor i strukturen gruppen skal placeres.

position
10000  --> niveau 1
11000  --> niveau 2
11100  --> niveau 3
11110  --> niveau 4
12000  --> niveau 2
12100  --> niveau 3
12110  --> niveau 4
12120  --> niveau 4
13000  --> niveau 2
14000  --> niveau 2

I select skal alle niveau 2 hentes. Altså 4 rows i dette tilfælde.
Jeg ved ikke om det er noget med at position skal være deleligt med 1000 ?
Avatar billede htx98i17 Professor
16. august 2005 - 21:48 #1
Nå, nu har jeg selv fundet en løsning tror jeg. Men holder den lige for mig selv lidt for at se om der er nogen der har en løsning der indeholder noget kalkulation.
Avatar billede arne_v Ekspert
16. august 2005 - 21:50 #2
WHERE  (pos / 1000) % 10 > 0 AND pos % 1000 = 0

måske
Avatar billede htx98i17 Professor
16. august 2005 - 21:58 #3
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 'WHERE (position / 1000) % 10 > 0 AND position % 1000 = 0

kan det være / og % ?
Jeg troede / og % gjorde det samme
Avatar billede arne_v Ekspert
16. august 2005 - 22:02 #4
/ = division
og jeg troede at % var modolus
Avatar billede htx98i17 Professor
16. august 2005 - 22:05 #5
okay

i php bruger jeg % som 'deleligt' altså $tal%2
Avatar billede arne_v Ekspert
16. august 2005 - 22:05 #6
prøv:

WHERE (((position / 1000) % 10) > 0) AND ((position % 1000) = 0 )
Avatar billede arne_v Ekspert
16. august 2005 - 22:06 #7
det er det samme

modulus = rest ved division

rest ved division = 0  =>  deleligt
Avatar billede htx98i17 Professor
16. august 2005 - 22:10 #8
der kan man bare se :)

det giver desværre samme fejl.
Avatar billede arne_v Ekspert
16. august 2005 - 22:18 #9
hvad står der før WHERE ?
Avatar billede htx98i17 Professor
16. august 2005 - 22:21 #10
SELECT
                        position,
                        targetid,
                        label
                       
                    From
                        tbleksternvisning
                   
                    WHERE
                       
                        WHERE (((position / 1000) % 10) > 0) AND ((position % 1000) = 0 )
                       
                    ORDER BY
                        position
Avatar billede arne_v Ekspert
16. august 2005 - 22:24 #11
2 x WHERE ????
Avatar billede htx98i17 Professor
16. august 2005 - 22:27 #12
*fløjte*
Avatar billede htx98i17 Professor
16. august 2005 - 22:28 #13
det er derfor der er godt at få andre øjne på det

høhø:)
Avatar billede arne_v Ekspert
16. august 2005 - 22:29 #14
virker det så ?
Avatar billede htx98i17 Professor
16. august 2005 - 22:32 #15
jaja jaja :)

lig et svar
Avatar billede htx98i17 Professor
16. august 2005 - 22:34 #16
jeg skal også bruge niveau 1 og kan selv finde ud af at lave det om, så de hentes ved kalkulation

men jeg kom lige i tankte om kort efter jeg postede spørgsmålet, at jeg kunne sige WHERE position LIKE '%000'

hvilken løsning mener du er bedst og hurtigst?
Avatar billede arne_v Ekspert
16. august 2005 - 22:35 #17
:-)
Avatar billede arne_v Ekspert
16. august 2005 - 22:36 #18
den løsning jeg har skitseret virker hvis feltet er et tal

LIKE må virke hvis feltet er en streng
Avatar billede arne_v Ekspert
16. august 2005 - 22:37 #19
LIKE '%noget

har ikke et godt ry performance mæssigt

jeg vil tro at det er langsommere

men test det !
Avatar billede htx98i17 Professor
16. august 2005 - 22:40 #20
tak for din deltagelse
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