簡體   English   中英

如何在MySQL中選擇與其他表中的多行相交的行?

[英]Howto Select rows that match the intersection of multiple rows in other tables in MYSQL?

似乎很復雜(可能是這樣)。 但是我無法想象如何解決這個問題。

有表:

公司介紹
id | 名稱
1 | 谷歌
2 | 三星
3 | 微軟

段落
id | 名稱
1 | 標頭
2 | 身體
3 | 頁腳

標簽
id | 標簽
1 | 互聯網
2 | 軟綿綿的

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

PARAGRAPHS_VS_TAGS
id | 段落編號| tag_id
1 | 2 | 1個
1 | 2 | 2

我需要通過邏輯AND選擇屬於屬於段落的標簽的[any_number]個公司。

因此,在上面的示例中,“正文”段應輸出唯一的公司“ Microsoft”。

添加:我只能使用WHERE和SubQueries :這是我必須使用的CMS的限制。

您只需要加入所有表:

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"; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM