Backgronud
我有很多餐馆和连锁餐厅。在我的数据库中,每个连锁餐厅都有一系列特定的餐厅。
例如,PizzaHut的连锁餐厅在我的区域有餐厅。
目标
我想知道,考虑到一系列的cityIds,有多少家餐厅连锁店。例如,给定数组1, 2,我想知道每个城市的餐厅连锁店的ids:
[
{cityId: 1, chains: [1, 2, 3]},
{cityId: 2, chains: [4, 5]}
]问题
问题是,我不知道如何在一个查询中做到这一点。到目前为止,我管理单个城市的所有链ids:
SELECT DISTINCT id
FROM restaurant_chains
INNER JOIN restaurants
ON restaurant_chains.id = restaurants.chainId
WHERE restaurants.city = MY_CITY_ID_HERE这里,我在我的restaurant_chains表和我的restaurants表(链的Id )之间做了一个ON。
然后我检查每一家餐馆,并检查它是否在我想要的城市。
研究
对于一个cityIds数组来说,唯一的方法就是有一个数组。但是MySQL没有数组。于是我搜索了WHILE循环,UNION ALL和TMP_TABLES:
How can I simulate an array variable in MySQL?
所有这些我都不太明白,我也不知道如何应用到我的例子中。
发问
如何对一组城市进行单次查询?
发布于 2017-10-09 07:58:53
除了你想要的一切之外,只要选择城市id就行了。有了它,您可以遍历结果,并将每个结果与城市标识关联起来。
SELECT DISTINCT restaurants.city, id
FROM restaurant_chains
INNER JOIN restaurants
ON restaurant_chains.id = restaurants.chainId
WHERE restaurants.city IN (CITY_ID1, CITY_ID2, CITY_ID3...)https://stackoverflow.com/questions/46641363
复制相似问题