2015-04-22 78 views
1

我有一個:左加入了Rightsystem

- 「用戶 」 - 表(ID ...)

- 「 」 - 表(ID

- 」 USER_GROUP 「 - 表(IDID用戶idgroup

- 」 菜單 「 - 表(ID

每個」菜單「 - 點可以在組列中有」一個「groupid。 每個用戶都可以擁有零,一個或多個idgroup ...

user-table: 
id, name 
1, ingo 
2, bernd 

groups-table: 
id, name 
1, group1 
2, group2 
3, group3 

user_groups-table 
id, userid, groupid 
1, 1, 1 
2, 1, 3 
3, 2, 1 

所以INGO從組別1 UND第3組成員,貝恩德只有會員從組別1

菜單表可以是這樣的: ID,名稱,組,... 1,Menupoint1,0(無組) 2,Menupoint2,3 3,Menupoint3,2

有一個寄存器會話與用戶標識叫做$ _SESSION [ 「UID」 ]

因此,如果ingo登錄,他可以看到Menupoint1和Menupoint2。不Menupoint3因爲他沒有會員...我想你知道啥子我的意思是......

我試試這個語法whitout的結果我想有:

$uid=$_SESSION[uid]; 
$stmt = $db->query("SELECT * from menu LEFT JOIN user_groups 
ON menu.groups=user_groups.groupid 
WHERE user_groups.groupid=? order by name"); 
$stmt->execute(array($uid)); 

你能不能給一些暗示,正確的方式..

對不起,我醜陋的英語 - 我來自德國。 但這似乎我要我的問題:))

回答

1

移動的狀態在第二臺從where子句的on條款的最佳論壇:

SELECT * 
from menu m LEFT JOIN 
    user_groups ug 
    ON m.groups = ug.groupid AND 
     ug.groupid = ? 
order by name; 

你的配方變成了LEFT JOININNER JOIN。當第二個表中沒有匹配時,groupid的值爲NULL,比較失敗。

+0

非常感謝您的幫助;)我嘗試這段代碼,但沒有結果,我可以從sql-table中看到...... :( – Ingo