webForumDet fria alternativet

Värden som inte finns i tabellen

Databaser & SQL

2 svar · 444 visningar · startad av Troxy

Medlem sedan mars 20041 505 inlägg
Frågan#1

Det är alltid så svårt att sätta bra rubriker på trådar...
Nåväl, jag har en tabell där jag lagrar vilka användarbehörighet till olika butiker. Det är SQL Server det rör sig om.
Tabellen är enkel och ser ut såhär:

ID     UserID  StoreID
-------------------------
1      31      25
2      31      27
3      32      22
4      32      29
5      33      21
6      33      23

Här kan vi exempelvis se att användare nr. 31 har behörighet till butik nr. 25 och 27. Inga speciella konstigheter.

Men om vi nu säger att jag har ett gäng siffor, typ 25,27,28. Då vill jag kunna peta in dom siffrorna i en SQL-fråga och få reda på om en viss användare har behörighet till alla butiker vars ID finns bland dessa siffor.

Om vi tittar på exemplet ovan igen så har ju användare nr. 31 inte behörighet till butik nr. 28, då vill jag att resultatet ska bli tomt!
Men om användaren hade haft behörighet, så ska det skickas tillbaka något, vad spelar ingen roll, men resultatet ska inte bli tomt.

Jag hoppas någon förstår vad jag är ute efter...
Jag gissar på att lösningen har något att göra med "NOT IN" eller "NOT EXISTS" eller liknande.

Mycket tacksam för svar!

Medlem sedan feb. 20011 198 inlägg
#2

Detta borde funka

select ID,UserID,StoreID from tbl tbl1
where (select count(distinct StoreID) from tbl tbl2 where tbl2.UserID=tbl1.UserID and StoreID in(25,27,28))=(select count(distinct StoreID) from tbl where StoreID in(25,27,28))
Medlem sedan mars 20041 505 inlägg
#3

Tack, jag fick till det utifrån den där SQL-frågan. :)

261 ms totalt · 3 externa anrop · v20260731065814-full.767b4345
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)