我有一个餐厅和餐馆连锁店。在我的数据库中,每家连锁餐厅都有一系列特定的餐厅。
例如,PizzaHut的连锁餐厅在我所在的区域设有餐厅。
我想知道,鉴于cityIds
数组,有多少餐馆连锁店。例如,鉴于阵列[1,2](伦敦和里斯本),我想知道每个城市的餐馆连锁店的ID:
[
{cityId: 1, chains: [1, 2, 3]},
{cityId: 2, chains: [4, 5]}
]
问题是我不知道如何在单个查询中执行此操作。到目前为止,我经理为一个城市获得所有连锁ID:
SELECT DISTINCT id
FROM restaurant_chains
INNER JOIN restaurants
ON restaurant_chains.id = restaurants.chainId
WHERE restaurants.city = MY_CITY_ID_HERE
我在INNER JOIN
表格与我的restaurant_chains
表restaurants
链接ID之间进行了ON
。
然后我经过每家餐馆,检查它是否在我想要的城市。
对于cityIds数组执行此操作的唯一方法是使用数组。但MySQL没有数组。所以我搜索了一下,发现了WHILE
个圈,UNION ALL
和TMP_TABLES
:
How can I simulate an array variable in MySQL?
所有这些我老实说都不太了解,我不知道如何申请我的例子。
如何对一组城市进行单一查询?
答案 0 :(得分:1)
除了您想要的任何其他内容之外,只需选择城市ID即可。有了它,您可以浏览结果并将每个结果与城市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...)