webForumDet fria alternativet
Logga in / Bli medlem

joinproblem, dolda forum

Databaser & SQL

1 svar · 182 visningar · startad av K@llen

Medlem sedan mars 20032 667 inlägg
Trådstart#1

Hejsan,

Ponera följande exempel på forumutseende:

Programmeringsspråk
Java
C++
Assembler
C
Visual Basic

Databashanterare
Oracle
DB2
mysql
SQL-server

Övrigt
Tips och förslag

Låt säga att Tips och förslag och Java och DB2 är publika forum som alla har rätt att se, resterande krävs det speciell access för. Jag vill lista formkategorierna som ovan på ett forums förstasida, men bara de forum besökaren har access till. Medlemmens userId finns i en sessionvariabel $_SESSION['userId']. Och de medlemmar som har tillgång till de privata forumen listas i tabellen forumAccess.

Hur bygger man denna join?

Databashanterade: mysql
Version: 3.23.58 (i bästa fall 4.01)

Tabellstruktur:

[b]forumCategory[/b]
categoryId (int)
categoryName (int)
categoryDescription (varchar)
isPublic (tinyint, 1=true, 0=false)

[b]forumForums[/b]
forumId (int)
catagoryId (int)
forumUse (varchar)
forumName (varchar)
isPublic (tinyint, 1=true, 0=false)

[b]forumAccess[/b]
forumId (int)
userId (int)
Medlem sedan mars 20032 667 inlägg
#2

Jag tror jag löste det så här, ska dock testa vidare innan jag ropar hej:

SELECT categoryName, forumName 
FROM forumCategory 
INNER JOIN forumForums 
   ON forumCategory.categoryId = forumForums.categoryId 
LEFT JOIN forumAccess 
   ON forumForums.forumId = forumAccess.forumId 
WHERE forumForums.isPublic AND forumAccess.forumId is null OR forumAccess.userId = '{$_SESSION['userId']}'
262 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
116 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)