繁体   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