2010-08-03 68 views
0

看起來很複雜(可能是這樣)。但我無法想象如何解決這個問題。Howto選擇與MYSQL中其他表中的多行交集相匹配的行嗎?

有表:

COMPANIES
ID |名稱
1 | Google
2 |三星
3 |微軟

PARAGRAPHS
ID |名稱
1 |標題
2 |身體
3 |頁腳

標籤
ID |標籤
1 |互聯網
2 | Softwate

COMPANIES_VS_TAGS
id | company_id | tag_id
1 | 1 | 1
2 | 2 | 2
3 | 3 | 1
4 | 3 | 2

PARAGRAPHS_VS_TAGS
id | paragraph_id | tag_id
1 | 2 | 1
1 | 2 | 2

我需要選擇屬於屬於段落邏輯AND的[any_number]標籤的所有公司。

因此,在上面的示例中,Body段應輸出唯一的公司「Microsoft」。

ADD:我只能使用WHERE和子查詢:這是CMS必須使用的限制。

回答

0

你只需要加入所有的表:

SELECT companies.id, 
     companies.name 
FROM companies, 
     tags, 
     companies_vs_tags, 
     paragraphs_vs_tags 
WHERE companies.id = companies_vs_tags.company_id 
     AND tags.id = companies_vs_tags.tag_id 
     AND tags.id = paragraphs_vs_tags.tag_id 
     AND paragraphs.id = paragraphs_vs_tags.paragraph_id 
     AND paragraphs.name = "Microsoft"; 
+0

Soory,但這個查詢(減去最後一行)產生邏輯**或**,所以作爲一個reasult我得到所有的公司((( – admit 2010-08-03 07:47:15

+1

我需要公司有** **兩個標籤在同一時間 – admit 2010-08-03 07:49:19

相關問題