我有一张商店表和一张商品表。商店表有很多项目,我的问题是我想搜索一个商店中可用的多个项目。
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/