Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在子查询中,我试图从外部查询中定义的表中进行选择_Mysql_Sql - Fatal编程技术网

Mysql 在子查询中,我试图从外部查询中定义的表中进行选择

Mysql 在子查询中,我试图从外部查询中定义的表中进行选择,mysql,sql,Mysql,Sql,嗨,我收到错误代码:1146。下一个sql代码中不存在表“sakila.t” select distinct address.address from ( select inventory.store_id, count(inventory.inventory_id) as num_of_items from inventory group by inventory.store

嗨,我收到错误代码:1146。下一个sql代码中不存在表“sakila.t”

select distinct address.address
  from (
         select inventory.store_id, 
                count(inventory.inventory_id) as num_of_items
                from inventory
                group by inventory.store_id
       ) as T,
       address,
       store,
 where T.num_of_items <= all (select num_of_items from T)
   and store.store_id = T.store_id 
   and store.address_id = address.address_id
从注释中,这应该返回库存中商品数量最少的商店的地址


我想这是因为我试图从子查询中的T获取信息,而T是一个变量,在sakila数据库中没有定义。这是问题吗?如果是,为什么?如果没有,请告诉我代码有什么问题。谢谢。

要使这种SQL查询正常工作,您需要分解任务

首先,您要计算出每个商店包含多少商品。这很容易,我想你是对的

     select inventory.store_id, 
            count(inventory.inventory_id) as num_of_items
       from inventory
      group by inventory.store_id
接下来,您要确定哪个商店的商品数量最少。你这样做

     select inventory.store_id, 
            count(inventory.inventory_id) as num_of_items
       from inventory
       group by inventory.store_id
       order by count(inventory.inventory_id) ASC
       limit 1
接下来,将其嵌套在一个查询中,该查询查找描述存储的数据

select address.address
  from (
       select inventory.store_id, 
              count(inventory.inventory_id) as num_of_items
         from inventory
         group by inventory.store_id
         order by count(inventory.inventory_id)
         limit 1
       ) as T
  join store on T.store_id = store.store_id
  join address on store.address_id = address.address_id
这就是你需要的结果。这里的技巧是使用聚合子查询计数。。。订购人。。。限制1以找到所需的特定项,然后使用一组join`子句收集所需的数据,以显示所找到项的相关信息


当您调试和排除此类问题时,您可以从最简单的查询开始,并逐步建立查询集。

一定有更好的方法编写此查询集。我认为45分钟内没有触及它的原因是SQL太迟钝了,没有人能轻易地理解你想做什么。你试过用连接重写它吗?我怎么能用连接来写呢?我必须在where中使用all关键字,是吗?你能从概念上解释一下这个查询应该做什么吗?返回库存中商品数量最少的商店的地址。酷,这很有帮助。可以显示表的架构吗?最好是一个SQLFIDLE和CREATETABLE。。。创建表格相关部分的语句。您好,首先-感谢您提供的详细答案。但我真的很想知道我做这件事的方式有什么问题,以避免将来犯错误。