Select * FROM Medlemmer WHERE klasse in (5,7,11) fejler -hvorfor?
Jeg har et felt i databasen som hedder [klasse] dette felt indeholder fx. 5,11,17 (streng) - disse værdier kommer fra en andet tabel med felterne [klasseID] og [klassenavn] der fx. kunne indeholde hhv. 5 og leder.
Jeg ønsker at udvælge alle de records hvor der i feltet klasse står skrevet 5 eller 7 eller 11.
Jeg har prøvet med følgende:
SQL =" Select * From medlemmer WHERE klasse in (5,7,11) "
men dette resulterer i en fejl: Datatyperne stemmer ikke overens i kriterieudtrykket.
TIL tjp Det er næsten korrekt: Jeg får dog kun de records, hvor feltet [klasse] indeholder et tal fx. 7 - men hvis det indeholder 7,11 bliver recorden ikke udskevet.
Egentlig burde problemet være at du fik for mange poster, da den vist også fanger fx 17 og 211, såvidt jeg kan se. Så kommaerne bør nok inkluderes i LIKE sætningerne.
SQL =" Select * From medlemmer WHERE klasse LIKE '%8%' OR klasse LIKE '%22%' "
Problemet er som tjp skriver at du også får poster med f.eks. tallet 18 og 83, fordi de indeholder tallet 8. Da du nogen gange bruger komma og andre gange semikolon, kan man ikke medtage kommaet i LIKE sætningen.
Hvis jeg skal bruge LIKE kan jeg ikke have værdier fra 0-9 da disse så også forekommer med 11, 22, 21 mfl.
Så måske jeg er nød til at lave min tabel med klasseID om så den starter ved 10 og kører opefter derfra? så kan jeg da bruge LIKE kommandoen men der er lidt meget LIKE kode der skal til...
Via en "multi-valgbox" udvælges klasserne (en til flere klasser). multi-valgboxen er fyldt med data fra klassetabelen. Når klasserne er valgt bliver klasseIDerne (fx. 8,12,22) skrevet i feltet klasse i medlemtabellen.
Er denne databaselogik forkert bygget op ifølge det i skriver?
Du kunne evt. lave en "Går_i"-tabel: medlnr(int),klasseID(int) af lutter fremmednøgler, hvor der for alle medlemmer, er en række for hver eneste klasse som han/hun går i, dvs. et medlnr gentages i ny række for hvert klasseID. Skulle personen springe fra en klasse sletter man bare en post fremfor at skulle ind at rette i en str.
Det virker lidt som at skyde gråspurve med krydsermissiler, men allerede ved blot lidt større DBer gør det livet meget nemmere, når den skal vedligeholdes.
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.