Gå til innhold

mssql: select, gruppering ikke i liste


Anbefalte innlegg

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
Videoannonse
Annonse

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...