mysql - 将内部联接结果合并到一列

标签 mysql sql join

我有一张商店表和一张商品表。商店表有很多项目,我的问题是我想搜索一个商店中可用的多个项目。

shop table
id | name
---------
1  | Shop 1
2  | Shop 2

Item table
id | name    | shop_id
----------------------
1  | JRC     | 1
2  | sukhoy  | 1
3  | sukhoy  | 2


当我要查找商品 jrc 和 sukhoy 时,它必须显示 Shop 1,因为这两个商品都在 Shop 1 上准备好了。

我的预期输出是

Output table
id | shopName | itemName
------------------------
1  | Shop 1   | JRC
2  | Shop 1   | sukhoy

我的查询是

select * from shops
inner join products as produk2 on produk2.shopId = shops.id and (produk2.name like "%sukhoy%")
inner join products as produk on produk.shopId = shops.id and (produk.name like "%jrc%")

之所以有效,是因为它对每个内部连接使用不同的别名。 但我想要的是,如何在不定义不同别名的情况下组合 2 连接的输出。或者如何将连接结果合并到同一列中?

最佳答案

我认为这可以满足您的需求:

select p.shop_id
from products p
group by p.shop_id
having sum(p.name like '%jrc%') > 0 and
       sum(p.name like '%sukhoy%') > 0;

这将返回包含两种产品的商店 ID。当然,您可以将结果加入到 shops 以获取有关商店的更多信息。

关于mysql - 将内部联接结果合并到一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55496451/

相关文章:

php - 如何连续比较当前时间与数据库中的日期时间字段?

mysql - 我的查询何时返回 null? (N最高薪资问题)

mysql - 如何将另一个表加入到此查询中

MySQL 在连接中仅选择 1 条记录,包括无匹配项

Mysql 使用空表返回一些用户选择的值

mysql - 根据年份在存档博客上创建分页

php - mysql一对多返回,分页处理

mysql - SQL从表中选择两个值并将其连接到另一个表中

java - 如何将日期时间嵌入到 SQL 字符串中

mysql - 如何将简单的 SQL 请求转换为 Apache PIG 脚本?