webForumDet fria alternativet

Två gånger om man finns med i tabell?

Databaser & SQL

8 svar · 256 visningar · startad av Jesper T

Medlem sedan nov. 20017 144 inlägg
Frågan#1

Varför visas man två gånger här om man skulle finnas med i tabellen "user_groups"?

SELECT distinct um_id,um_forname, [red]ug_umid[/red]
FROM user_members LEFT JOIN site_groups, user_groups ON ug_umid=um_id and sg_gid = ug_sgid  
WHERE um_uid=12123 and sg_admingroup=1

(Det försvinner när jag tar bort ug_umid Varför?

Medlem sedan dec. 200012 464 inlägg
#2

Jag förstår inte varför Mysql godkänner den frågan. Dels så kan du inte ha join utan on/using direkt efter den högra tabellen och dels kan man inte blanda explicita och implicita join på det där sättet.

Beskriv tabellerna och ge exempel på data samt förväntat resultat.

Medlem sedan nov. 20017 144 inlägg
#3

Oops, nu fick jag bassning. ;)
Jag vill hämta alla medlemmar ifrån tabellen user_members och skriva ut ug_umid om den existerar i tabellen user_groups som har värdet 1 i tabellen site_groups. ...ehhh knappt jag hajjar.

Medlem sedan dec. 200012 464 inlägg
#4

ehhh knappt jag hajjar

Det är därför jag vill ha exempel på datainnehåll.

Medlem sedan nov. 20017 144 inlägg
#5

Ok, kommer här:

[b]user_members[/b]
um_id | um_forname | um_uid | m.fl.
---------------------------
1 | Kalle   | 12123
[red]2 | Olle    | 12123[/red]
3 | Göran   | 12123

[b]user_groups[/b]
ug_umid | ug_sgid
---------------------------
1 | 16
[red]2 | 17[/red]
3 | 16

[b]site_groups[/b]
sg_gid | sg_admingroup | sg_name 
---------------------------
[red]17 | 1 | Administratör[/red]
16 | 0 | Bollsport

Och resultatet skall bli:
1 | Kalle | 1
2 | Olle | null
3 | Göran | null

Alltså; lista alla användare, finns personen i tabellen user_groups och att den motsvarande gruppen har värdet 1 i kolumnen sg_admingroup i tabellen site_groups, så skall hans eget id, skrivas ut (1 i detta fall) i annat fall så skall null returneras.
Lite svårt att beskriva men jag gjorde så gott jag kunde... :)

Medlem sedan nov. 20017 144 inlägg
#6

Kan denna stämma?

SELECT distinct um_id, um_forname, ug_umid
FROM user_members LEFT JOIN user_groups ON um_id = ug_umid 
LEFT JOIN site_groups ON sg_gid = ug_sgid and sg_admingroup=1
WHERE um_uid=12123

/red tydligen inte eftersom att Hasse kommer upp fast han inte är med i en admingrupp...

Medlem sedan nov. 20017 144 inlägg
#7

Jag kan inte hitta en lösning på detta, lite hjälp på vägen mottages gärna. :)

Medlem sedan nov. 20017 144 inlägg
#8

/R

Medlem sedan nov. 20017 144 inlägg
#9

Struntar i denna, den verkar vara för svår.

259 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)