webForumDet fria alternativet

SELECT-fråga

7 svar · 589 visningar · startad av cyeclone

cyecloneMedlem sedan dec. 2004143 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 20019 519 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. 2004143 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 20019 519 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 464 inlägg
#5

Flyttas från ASP

cyecloneMedlem sedan dec. 2004143 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 20019 519 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. 20039 342 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.

131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)