Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.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_Subquery_Selectlist - Fatal编程技术网

Mysql 子查询-定义选择列表。子查询为每个结果行返回相同的值

Mysql 子查询-定义选择列表。子查询为每个结果行返回相同的值,mysql,sql,subquery,selectlist,Mysql,Sql,Subquery,Selectlist,你知道我做错了什么吗? 我的子查询正在为所有行返回相同的值 SELECT distinct ca.descripcion AS 'Storage_Condition', --Warehouses.[Nombre] as [Warehouse], COUNT(pos.rack) as [Max Capacity], (select distinct count(pos.rack) + '' FROM Depositos de INNER JOIN Posiciones pos ON de.d

你知道我做错了什么吗? 我的子查询正在为所有行返回相同的值

SELECT distinct
ca.descripcion AS 'Storage_Condition',
--Warehouses.[Nombre] as [Warehouse],
COUNT(pos.rack) as [Max Capacity],

(select distinct 
count(pos.rack) + ''
FROM Depositos de
INNER JOIN Posiciones pos ON  de.deposito_id = pos.deposito_id
INNER JOIN Condiciones_Almacenamiento ca ON  de.condicion_almac_id = ca.condicion_id
INNER JOIN Estados_Posicion ep ON  pos.estado_posicion_id = ep.estado_posicion_id 
INNER JOIN Tipo_posiciones tipopos ON tipopos.tipo_posicion_id = pos.tipo_posicion_id 
INNER JOIN Warehouses ON   Warehouses.[warehouse_id] = de.[warehouse_id]
WHERE ((CASE WHEN 1 = 2 THEN ep.descripcion_es ELSE ep.descripcion END) = 'Occupied') AND tipopos.descripcion = 'Shelf' AND Warehouses.nombre like ('%Frankfurt%')) as [Used Capacity]

FROM  Depositos de

INNER JOIN Posiciones pos ON  de.deposito_id = pos.deposito_id
-- AND  de.warehouse_id = @warehouse_id
INNER JOIN Condiciones_Almacenamiento ca ON  de.condicion_almac_id = ca.condicion_id
INNER JOIN Tipos_Subproyecto ts ON  de.tipo_subproyecto_id = ts.tipo_subproyecto_id
INNER JOIN Estados_Posicion ep ON  pos.estado_posicion_id = ep.estado_posicion_id
INNER JOIN Tipo_posiciones tipopos ON tipopos.tipo_posicion_id = pos.tipo_posicion_id 
INNER JOIN Warehouses ON   Warehouses.[warehouse_id] = de.[warehouse_id]
where 
--ca.descripcion = '15-25.C'
tipopos.descripcion = 'Shelf'
and Warehouses.nombre like ('%Frankfurt%')
--and (CASE WHEN 1 = 2 THEN ep.descripcion_es ELSE ep.descripcion END) = 'Occupied'

Group by 
--Warehouses.[Nombre] 
ca.descripcion
Order by COUNT(pos.rack) desc


提前非常感谢您的建议!:)

我认为您只需要条件聚合:

SELECT ca.descripcion AS Storage_Condition,
       count(pos.rack) as [Max Capacity],
       sum(case when ep.descripcion = 'Occupied' then 1 else 0 end) as used_capacity
FROM  Depositos de JOIN
      Posiciones pos
      ON  de.deposito_id = pos.deposito_id JOIN
      Condiciones_Almacenamiento ca
      ON de.condicion_almac_id = ca.condicion_id JOIN
      Tipos_Subproyecto ts
      ON  de.tipo_subproyecto_id = ts.tipo_subproyecto_id JOIN
      Estados_Posicion ep
      ON  pos.estado_posicion_id = ep.estado_posicion_id JOIN
      Tipo_posiciones tipopos
      ON tipopos.tipo_posicion_id = pos.tipo_posicion_id JOIN
      Warehouses
      ON  Warehouses.[warehouse_id] = de.[warehouse_id]
WHERE tipopos.descripcion = 'Shelf' and
      Warehouses.nombre like '%Frankfurt%'
GROUP BY ca.descripcion
ORDER BY COUNT(pos.rack) desc;

您的子查询是不相关的,它是独立的-当然它返回相同的值(而且,它只执行一次)。如果您等待关联此子查询,则至少要删除别名。PS.Thаsuquery行源与外部查询源中的一个太相似了-所以您需要在子查询中使用它吗?也许条件聚合就足够了?顺便说一句,您不太可能(但并非不可能)需要像
DISTINCT[aggregate\u function]
这样的构造。您可以假设它是错误的。请提供示例数据、所需结果,并清楚解释查询应该执行的操作。非常感谢!这正是我需要的@阿德拉·什克拉巴洛娃。如果这回答了我们的问题,你可以接受答案。