2013-01-08 56 views
1

好吧,我有一些像這樣的表..查詢有關泛化表

table TopicForum 
------------------------- 
- idforum (PK) 
- iduser (FK) 
- subject 
- content 


table Usermember 
-------------------------------- 
-iduser (PK) 
-password 
-accesslevel 

table student 
------------------------------- 
-idstudent (PK) 
-iduser (FK) 
-name 

table teacher 
--------------------------------- 
-idtecher (PK) 
-iduser(FK) 
-name 

table admin 
----------------------------------- 
-idadmin (PK) 
-iduser(FK) 
-name 

,所以我想在學生老師通過ID用戶在TopicForum參考顯示,並管理 ..

請幫忙謝謝

+0

可以,例如,一個用戶同時是老師和管理員? – SWeko

回答

0

試試這個:

SELECT DISTINCT A.name, A.iduser 
FROM (SELECT NAME, iduser FROM Student 
     UNION 
     SELECT NAME, iduser FROM Teacher 
     UNION 
     SELECT NAME, iduser FROM Admin) AS A 
INNER JOIN TopicForum tf ON A.iduser = tf.iduser 
+0

非常感謝你,先生... 你是我的救世主 –

0

嘗試:

SELECT DISTINCT tf.Subject 
FROM TopicForum tf 
INNER JOIN (
    SELECT iduser FROM Student 
    UNION 
    SELECT iduser FROM Teacher 
    UNION 
    SELECT iduser FROM Admin 
) u ON tf.iduser = u.iduser 

我不明白爲什麼你讓iduseridteacher例如之間的區別。除非你想以某種方式格式化它們(但爲什麼?)我會建議將這兩列合併到一個唯一的ID列中,這可以是與表usermember的一對一關係。