[英]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.