如何在MySQL中组合多个查询?

时间:2017-10-09 07:56:15

标签: mysql arrays

Backgronud

我有一个餐厅和餐馆连锁店。在我的数据库中,每家连锁餐厅都有一系列特定的餐厅。

例如,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_chainsrestaurants链接ID之间进行了ON

然后我经过每家餐馆,检查它是否在我想要的城市。

研究

对于cityIds数组执行此操作的唯一方法是使用数组。但MySQL没有数组。所以我搜索了一下,发现了WHILE个圈,UNION ALLTMP_TABLES

How can I simulate an array variable in MySQL?

所有这些我老实说都不太了解,我不知道如何申请我的例子。

问题

如何对一组城市进行单一查询?

1 个答案:

答案 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...)