Avatar billede boris Mester
14. februar 2003 - 08:35 Der er 10 kommentarer og
2 løsninger

SELECT med flere betingelser

Jeg har en MySQL database med to tabeller.
Det virker fint med f.eks. SELECT * FROM TABEL1, TABEL2 WHERE TABEL1.nummer = TABEL2.nummer....

Det virker også med:
SELECT * FROM TABEL1, TABEL2 WHERE TABEL1.nummer = TABEL2.nummer AND TABEL1.nummer LIKE '%5%'...

Men hvis jeg ændrer '%5%' til en værdi med mere end en karakter, f.eks. '55', bliver resultatet af forespørgselen det rene ingenting, selvom f.eks. 55 forekommer i nummeret (som er en streng)

Felterne er VARCHAR(10)
Avatar billede snowball Novice
14. februar 2003 - 08:39 #1
Hvis du skriver '55' i stedet for '%55%' så søger du jo kun efter værdien 55 og ikke efter værdier der indeholder 55 !

Snowball
Avatar billede mfalck Praktikant
14. februar 2003 - 08:50 #2
forekommer '55' også i tabel 2 - ellers er det jo klart at der ikke er nogen resultater.
Avatar billede boris Mester
14. februar 2003 - 08:57 #3
Beklager, skrivefejl, der skal stå '%55%'. Der kunne også have stået f.eks. '%88%'.
Jo, det forekommer i begge tabeller, og mange gange endda.

Hvis jeg skriver en enkelt karakter i søgningen virker det perfekt. Med '%5%' indgår karakteren 5 i alle posterne, der fremkommer
Men hvis jeg søger på en streng med to karakterer, kommer der det rene ingenting.
Avatar billede mfalck Praktikant
14. februar 2003 - 09:40 #4
jeg mistænker din join for at volde problemer; får du noget ud hvis du piller alle referencer til tabel2 ud ?
SELECT * FROM TABEL1 WHERE TABEL1.nummer LIKE '%55%'
Avatar billede boris Mester
14. februar 2003 - 09:42 #5
JA
Avatar billede mfalck Praktikant
14. februar 2003 - 09:59 #6
hvad får du ud af EXPLAIN SELECT * FROM TABEL1, TABEL2 WHERE TABEL1.nummer = TABEL2.nummer AND TABEL1.nummer LIKE '%5%'

og det samme med '%55%' ?
Avatar billede boris Mester
14. februar 2003 - 09:59 #7
Jeg har fået det til at virke nu ved at flytte rundt på mine joins.
Selvom det ikke helt var svaret, vil jeg godt sige tak til mfalck og spørge om du ville være tilfreds med at få 20 point for at have hjulpet på vej?
I så fald vil jeg nemlig bede mfalck om svar, lukke og sige tak.
Avatar billede mfalck Praktikant
14. februar 2003 - 10:02 #8
ja - det lyder fair nok :-)
Avatar billede mfalck Praktikant
14. februar 2003 - 10:03 #9
det er underligt at det har en betydning på hvilken måde at joinsne står - men det har jeg også oplevet at har haft en betydning i en oracle DB (der gik scriptet endda ned)
Avatar billede boris Mester
14. februar 2003 - 10:03 #10
Vi krydsede lige hinanden.
30 point og tak.
Avatar billede boris Mester
14. februar 2003 - 10:05 #11
Men du har ret - der er ike andet at gøre end at skrælle alt væk og prøve med en stump ad gangen til det virker
Avatar billede mfalck Praktikant
14. februar 2003 - 10:09 #12
ja - det er så også en af ulemperne ved SQL - der er ingen anden måde at få det til at virke på end at bryde det ned.
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