webForumDet fria alternativet

SELECT-fråga

7 svar · 589 visningar · startad av cyeclone

cyecloneMedlem sedan dec. 2004147 inlägg
#1

Godkväll!

Har en liten fråga. Jag har två stycken tabeller:

Groups
.ID
.group_name

Groups_Members
.group_id
.username
.status

Där Groups_Members.group_id = Groups.ID

Man kan vara med i flera grupper med samma "username".
Har även en Session("username")

Jag vill hämta Groups.ID & Groups.group_name genom att kolla vart Session("username") = Group_Members.username och status måste vara = "member"

Nu blev det jätte rörigt...
Men om ni förstår gåtan ovan så vill jag lösa detta med en snygg SELECT-fråga, om det är möjligt..?

Mvh

voigtann1Medlem sedan juni 20018 810 inlägg
#2
"<din inner join frågor etc ... WHERE Groups_Members.username = '" & Session("Username") & "'"

Det känns som det är lite konstig databasdesign du har, har du även en "Members" tabell?

cyecloneMedlem sedan dec. 2004147 inlägg
#3

Tack för svar.

Tycker också den känns lite konstig.. Om inte annat rörig :)
Har en tabell för "Users" där en massa information om användaren sparas.
Vet inte hur jag ska lösa det annars, men just Grupp tabellerna finns där nu för att man sedan ska kunna anmäla en hel grupp till ett event, det ska även gå bra att anmäla sig utan en grupp.

Ska testa din kod och se om jag får det att fungera!

voigtann1Medlem sedan juni 20018 810 inlägg
#4

Man brukar ha:
Groups
--GroupId
--GroupName
...

Group_user
--GroupId
--UserId

users
--UserId
--UserName
...

SELECT g.* FROM users u INNER JOIN Group_user gu ON gu.UserId = u.UserID INNER JOIN Groups g ON g.GroupId = gu.GroupId WHERE u.UserName = 'cyeclone'

Så får du en lista på de grupper "cyeclone" är medlem i

LarsGMedlem sedan dec. 200012 465 inlägg
#5

Flyttas från ASP

cyecloneMedlem sedan dec. 2004147 inlägg
#6

Nu har jag ett annat problem:

Har använt mig av en INNER JOIN som hämtar de grupper som användaren är medlem i, ungefär som scriptet ovan. Detta gör jag med hjälp av en loop.

Användarna har olika status som "owner" "member" och "request" för dom som ansökt till gruppen men inte blivit accepterade.

I denna loopen som listar alla gruppen som användaren är "owner" i vill jag samtidigt spara ett värde i en sträng så man kan se om någon har statusen request.

Ex:
Grupp1
Grupp2 - Ny ansökan
Grupp3

Finns det något smidigt sätt att lösa även detta på?

voigtann1Medlem sedan juni 20018 810 inlägg
#7

Ligger den i "Group_user" så är det ju bara att ta med dig det i SQL frågan

SELECT g.* .... säger hämtar allt ifrån "g" som är Alias för Group (se SQL frågan ovan).

nitro2k01Medlem sedan aug. 20037 630 inlägg
#8
SELECT g.*, if(gu.status = 'request', 'Ny ansökan', '') AS status
FROM users u 
INNER JOIN Group_user gu ON gu.UserId = u.UserID 
INNER JOIN Groups g ON g.GroupId = gu.GroupId WHERE u.UserName = 'cyeclone'

Jag gissar att statusen lagras som en kolumn i Group_user. Då kan du göra som ovan.

Edit: Bort med BB-koden.

125 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
123 ms — hämta tråd, inlägg och bilagor (db)