Här kommer ett utkast som kanske kan fungera.
Tänk på att gärna meddela vilken databas det rör sig om eftersom syntaxen kan variera.
select gs.groupid, gn.groupnames , gc.groupid, gc.channelid, gc.privilegeid
from group_servers as gs
join groupnames as gn on gn.groupid = gs.groupid
join group_channels as gc on gc.groupid = gs.groupid
where gs.serverid = 18
and gs.privilegeid = 111
select gn.groupnames, gc.grooupid, gc.channelid, gc.privilegedid from group_names gn
join group_channels gc on gn.groupid = gc.groupid where gc.groupid in
(select groupid from group_servers where serverid = 18 and privilegeid = 111)
/red: Jaha, dubbeljoin kan man såklart göra ocskå :)
Här kommer ett utkast som kanske kan fungera.
Tänk på att gärna meddela vilken databas det rör sig om eftersom syntaxen kan variera.
select gs.groupid, gn.groupnames , gc.groupid, gc.channelid, gc.privilegeid
from group_servers as gs
join groupnames as gn on gn.groupid = gs.groupid
join group_channels as gc on gc.groupid = gs.groupid
where gs.serverid = 18
and gs.privilegeid = 111
Sorry SQL och tackar, men såg i svaret att jag vill exkludera en grupp, groupid = 72 ska inte tas med
select gn.groupnames, gc.grooupid, gc.channelid, gc.privilegedid from group_names gn
join group_channels gc on gn.groupid = gc.groupid where gc.groupid in
(select groupid from group_servers where serverid = 18 and privilegeid = 111)
/red: Jaha, dubbeljoin kan man såklart göra ocskå :)
Tackar, men såg i svaret att jag vill exkludera en grupp, groupid = 72 ska inte tas med
Och här blev resultatet:
Msg 207, Level 16, State 3, Line 1
Invalid column name 'groupnames'.
Msg 207, Level 16, State 3, Line 1
Invalid column name 'grooupid'.
Msg 207, Level 16, State 3, Line 1
Invalid column name 'privilegedid'.
Det här betyder att kolumnnamnen heter något annat, jag ser nu tex att det står grooupid, med två o:n.
Både jag och hulken gav varsin lösningsidé, det är ju nästan självklart så att du måste skriva om den lite så att det passar din SQL-typ, vi har ju ingen aning om du kör MSSQL, Oracle, potgres, MySQL eller SQLite eller något annat. Det kan se olika ut i allihopa...
Felmeddelandet "invalid column name" måste du kunna tolka själv och rätta det som behövs, annars är du nog ute på väldigt djupt vatten :)
Det här betyder att kolumnnamnen heter något annat, jag ser nu tex att det står grooupid, med två o:n.
Både jag och hulken gav varsin lösningsidé, det är ju nästan självklart så att du måste skriva om den lite så att det passar din SQL-typ, vi har ju ingen aning om du kör MSSQL, Oracle, potgres, MySQL eller SQLite eller något annat. Det kan se olika ut i allihopa...
Felmeddelandet "invalid column name" måste du kunna tolka själv och rätta det som bnehövs, annars är du nog ute på väldigt djupt vatten :)
Ändrade lite stavningar och lite annat smått och fick det att lira, men som du ser så vill jag exkludera ett groupid, se ovan.
Ändrade lite stavningar och lite annat smått och fick det att lira, men som du ser så vill jag exkludera ett groupid, se ovan.
Aha, det är en baggis, skriv:
select gn.groupnames, gc.grooupid, gc.channelid, gc.privilegedid from group_names gn
join group_channels gc on gn.groupid = gc.groupid where gc.groupid in
(select groupid from group_servers where serverid = 18 and privilegeid = 111)
and gc.groupid <> 72
Tack för hjälpen och eftersom du sa att om jag hade fler frågor så fråga...
La till lite men fattar inte varför jag inte får någon träff alls:
select gs.groupid, gn.groupname , gc.groupid, gc.channelid, gp.description , gt.aliasservername
from group_servers as gs
join group_names as gn on gn.groupid = gs.groupid
join group_channels as gc on gc.groupid = gs.groupid
join server_info as gt on gt.serverid = gs.serverid
join privilege_info as gp on gp.privilegeid = gc.privilegeid
where gs.serverid = 18
and gs.privilegeid = 10011
and gp.privilegeid = 20008
and gp.privilegeid = 20004
and gc.groupid <> 72
alla privikoder har en descrition som är snyggare att få fram än siffrorna.
priviid 10011 finns bara i group_servers medans dom andra finns i group_channels, deras descrition finna allas i priviledge_info
Du säger att gs.privilegeid ska vara 1001 samtidigt som den ska vara 20008 samtidigt som den ska vara 20004.
borde kanske vara så här istället:
select gs.groupid, gn.groupname , gc.groupid, gc.channelid, gp.description , gt.aliasservername
from group_servers as gs
join group_names as gn on gn.groupid = gs.groupid
join group_channels as gc on gc.groupid = gs.groupid
join server_info as gt on gt.serverid = gs.serverid
join privilege_info as gp on gp.privilegeid = gc.privilegeid
where gs.serverid = 18
and (gs.privilegeid = 10011
or gp.privilegeid = 20008
or gp.privilegeid = 20004)
and gc.groupid <> 72
and gp.privilegeid = 20008
and gp.privilegeid = 20004
Jag förstår hur du menar, tror jag, men koden ovan betyder att du kräver att gp.privilegeid ska vara 20008 samtidigt som det är 20004, vilket inte går.
Vill du ange en lista får du använda "IN" så att det blir:
select gs.groupid, gn.groupname , gc.groupid, gc.channelid, gp.description , gt.aliasservername
from group_servers as gs
join group_names as gn on gn.groupid = gs.groupid
join group_channels as gc on gc.groupid = gs.groupid
join server_info as gt on gt.serverid = gs.serverid
join privilege_info as gp on gp.privilegeid = gc.privilegeid
where gs.serverid = 18
and gs.privilegeid = 10011
and gp.privilegeid in (20008, 20004)
and gc.groupid <> 72
Förutsatt att gs.privilegeid kan ha ett annat värde än gp.privilegeid. Är det istället så att dom tre privid:na hör ihop så sätt en join på dom också och så gör du om IN-listan så att alla tre värdena finns med där.
/red eller såsom hulken säger, att jag alltid ska klura på formuleringara :)
Kanske inte så lätt att förklara men ska försöka. Jag fick ju allt att fungera till en början, sen ville jag ha dit förklaringen på privilegeid istället:
groupid groupname groupid channelid privilegeid alias
102 hejhå 102 563 20008 server1
102 hejhå 102 564 20008 server1
102 hejhå 102 565 20008 server1
Dvs byta ut 20008 eller 20004 eller 10011 mot sina förklaringar.
Sägas kan att privlegeid 10011 finns bara i group_servers och dom andra två finns i group_channels.
(Hur gör man för att få in svaret i inlägget i en sån där ruta som ni fått in koden i?)
Och man skriver [ kod ] koden här [ / kod ] fast utan mellanslag, så blir det i en ruta.
Om du går till avancerade alternativ för svar så ser du tre kod-tecken, ett för "kod", ett för "html" och den sista för "php". För HTML och PHP så blir det färglagt lite snyggt också.
264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e