webForumDet fria alternativet

joinproblem, dolda forum

1 svar · 182 visningar · startad av K@llen

K@llenMedlem sedan mars 20032 654 inlägg
#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)
K@llenMedlem sedan mars 20032 654 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']}'
Genererad på 386 ms · cache AV · v20260730165559-full.f96bc7eb