2012-05-18 77 views
1

我有以下關係幾桌: -如何查詢在多個多對多的關係都參與

publications->id name 
categories->id name 
types->id name 
program->id name 

的出版物可以有很多類別,類型多,許多程序。同樣每個人都有許多出版物。所以發佈表與這些表中的每一個都有很多關係。 因此我創建副表爲他們每個人,並提出了以下三個表連接的每一個上述

pub_cat ->publicationid categoryid 
pub_type->publicationid typeid 
pub_prog->publicationid programid 

現在,我必須找到所有出版物的名稱,其中說的類別id = 2的typeid = 2, programid = 1

我對這些複雜的查詢相當新,任何幫助將深表謝意。

+1

瞭解[SQL連接]( http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html)。 – eggyal

回答

0

好,我只是解決了這個..thanks @ eggyal,@拉斐爾

select id,title,pub_cat.catid,pub_prog.progid,pub_type.typeid from publications 
inner join pub_cat on publications.id=pub_cat.pubid 
inner join pub_prog on publications.id=pub_prog.pubid inner join pub_type 
on publications.id=pub_type.pubid where pub_type.typeid=6 and pub_cat.catid=7 
and pub_prog.progid=1; 
+0

接受你的答案,如果它的作品。 – nawfal

+0

只能在兩天內接受答案... – Rasmus

0

你應該看看你將所有表連接在一起的聯接,並在where子句中聲明你想找到的東西。一個例子可以是:

SELECT * FROM t1 LEFT JOIN (t2, t3, t4) 
      ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c) 
WHERE t2.a = 1; 

這僅僅是從這裏的例子MySQL Refeerence