petterg Skrevet 12. juli 2013 Del Skrevet 12. juli 2013 Nok en utfordring i select query. Tabell Enheter: enhetId, gruppeId, enhetTekst 1,1,"aaa" 2,1,"aab" 3,1,"aac" 4,2,"aba" 5,2,"abb" 6,2,"abc" 7,3,"bba" 8,3,"bbb" Tabell FilterElement elementId, filterId, filterTekst 1,1,"bc" 2,1,"cc" 3,2,"aa" 4,2,"ab" Så er målet en select query som, gitt en filterId, lister alle enheter som ikke er medlem av en gruppe hvor en eller flere enhetTekst inneholder filterTekst. Altså: Hvis filterId=1 så er ønsket resultat enhetId={1,2,3,7,8} fordi enhetId=6 inneholder "bc", og dermed skal alle enheter med gruppeId=2 utelukkes. Hvis filterId=2 så er ønsket resultat enhetId={7,8} fordi alle gruppeId=2 utelukkes av at enhetId=6 inneholder "ab" og alle gruppeId=1 utelukkes både av at enhetId=3 inneholder "ab" og av at enhetId={1,2,3} inneholder "aa". Forslag? Lenke til kommentar
Crowly Skrevet 14. juli 2013 Del Skrevet 14. juli 2013 Charindex() vil returnere en verdi >0 hvis en tekst streng finnes i en annen. Uten å ha tenkt spesielt på dette, så vil dette forhåpentligvis enten fungere eller peke deg i riktig retning: SELECT e.enhetId FROM Enheter e WHERE e.gruppeId NOT IN (SELECT e2.gruppeId FROM Enheter e2 WHERE CHARINDEX(?, e2.enhetTekst) > 0) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå