webForumDet fria alternativet

SELECT-fråga

Databaser & SQL

7 svar · 589 visningar · startad av cyeclone

Medlem sedan dec. 2004143 inlägg
Frågan#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

Medlem 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?

Medlem 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!

Medlem 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

Medlem sedan dec. 200012 464 inlägg
#5

Flyttas från ASP

Medlem 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å?

Medlem 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).

Medlem sedan aug. 20039 340 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.

259 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)