Permalänk
Medlem

En mysql fråga

Hej,
jag har ett problem med en query, som inte hämtar resultatet som jag önskar, är det någon som ser vad som skulle kunna vara fel. Mina värden i tabellen ser ut som följande
userid | username | usergroup | usermem
1 | A | 3 | 1
2 | B | 1,2,3 | 1
3 | C | 3 | 0
4 | D | 2,3 | 0
5 | E | 3,4 | 0
6 | F | 33 | 0

Jag skulle önska att få ut userid 3,4,5 dvs C,D,E

Min query ser ut som följande

select userid, username from tabellen where usermem=0 and usergroup like '3' or usergroup like '%,3' or usergroup like '3,%';

Med denna query får jag som resultat userid 1,3,4,5 (A,C,D,E). Varför kommer A med i denna query?

Är det någon som har en aning?

Permalänk
Medlem
Skrivet av warzo:

Hej,
jag har ett problem med en query, som inte hämtar resultatet som jag önskar, är det någon som ser vad som skulle kunna vara fel. Mina värden i tabellen ser ut som följande
userid | username | usergroup | usermem
1 | A | 3 | 1
2 | B | 1,2,3 | 1
3 | C | 3 | 0
4 | D | 2,3 | 0
5 | E | 3,4 | 0
6 | F | 33 | 0

Jag skulle önska att få ut userid 3,4,5 dvs C,D,E

Min query ser ut som följande

select userid, username from tabellen where usermem=0 and usergroup like '3' or usergroup like '%,3' or usergroup like '3,%';

Med denna query får jag som resultat userid 1,3,4,5 (A,C,D,E). Varför kommer A med i denna query?

Är det någon som har en aning?

Av de fetstilta anledningarna, A är med i usergroup 3. Därmed kommer den med.

EDIT: Märkte nu att den låg i usermem 1, kollade lite slarvigt första gången.
Då kanske det inte är som jag skrev.

Permalänk
Medlem

Du behöver paranteser runt dina and och or för att visa vilka som hänger ihop och hur tror jag.

where usermem=0 and (usergroup like '3' or usergroup like '%,3' or usergroup like '3,%')
where (usermem=0 and usergroup like '3') or usergroup like '%,3' or usergroup like '3,%'

är tex två olika saker. Den första kräver att usermem är 0 och att något av dom andra 3 är uppfyllt Den andra kräver att usermem är 0 och att usergroup är 3, eller att någon av dom andra är sann.

Visa signatur

Intel i7-7700k @ 4.9Ghz - Noctua NH-U12P SE2 - MSI GTX 1070 Armor OC - AsRock Z270 Extreme4 - G.Skill Ripjaws V DDR4 3200MHz CL16 2x8GB - Corsair RM750x 750W - Samsung 970 EVO 500GB - Acer Predator X34 - Silverstone RV02-E - Asus Xonar Essence STX II 7.1 - Mionix Naos 8200 - Corsair Gaming MM400 - Das Keyboard 4 Ultimate MX Brown - Beyerdynamic DT990 Pro 250 Ohm - Antlion ModMic 4.0 Unidirectional

Permalänk
Medlem

Malow: Tackar, det där löste mitt problem!