我有一個複雜的mysql查詢和多重子查詢。我需要其中一個子查詢與主表相關。那是我的查詢:MySQL - 相關的子查詢失敗,where子句中的列是unknwon
SELECT table_cl.id, table_cl.nombre, table_cl.apellidos, (SELECT COUNT(*) FROM (
SELECT iauno.id_accion, iauno.id_cliente, iauno.asistencia
FROM inter_clientes_acciones iauno
INNER JOIN clientes clientesuno ON clientesuno.id = iauno.id_cliente
WHERE iauno.id_cliente IN(
SELECT iasubuno.id_cliente
FROM inter_clientes_acciones iasubuno
INNER JOIN acciones acsubuno ON iasubuno.id_accion = acsubuno.id
WHERE acsubuno.id_proyecto = 3
GROUP BY iasubuno.id_accion
HAVING COUNT(*) = 1
)
)caa
) as convocado,
(SELECT COUNT(*) FROM (
SELECT iados.id_accion, iados.id_cliente, iados.asistencia
FROM inter_clientes_acciones iados
INNER JOIN clientes cldos ON cldos.id = iados.id_cliente
WHERE iados.id_cliente IN(
SELECT iasubdos.id_cliente
FROM inter_clientes_acciones iasubdos
INNER JOIN acciones acsubdos ON iasubdos.id_accion = acsubdos.id
WHERE acsubdos.id_proyecto = 3 AND iasubdos.id_cliente = table_cl.id
GROUP BY id_accion
HAVING COUNT(*) = 1
)
)car
) as realizado
FROM clientes table_cl
WHERE table_cl.id_proyecto = 3 AND table_cl.id IN (
SELECT iatres.id_cliente
FROM inter_clientes_acciones iatres
INNER JOIN clientes cltres ON cltres.id = iatres.id_cliente
WHERE iatres.id_cliente IN(
SELECT iasubtres.id_cliente
FROM inter_clientes_acciones iasubtres
INNER JOIN acciones acsubtres ON iasubtres.id_accion = acsubtres.id
WHERE acsubtres.id_proyecto = 3
GROUP BY iasubtres.id_accion
HAVING COUNT(*) = 1
)
)
當我執行查詢,我得到的錯誤Error Code: 1054. Unknown column 'table_cl.id' in 'where clause'
我如何修改引用上table_cl的ID查詢?
編輯:
可能的解釋是必需的:我有3個表,客戶行爲和clients_actions(西班牙語說:clientes,acciones和inter_clientes_acciones)。可以爲一個客戶端或多個客戶端創建一個動作。這個查詢的目的是獲得這個字段:客戶的名字和姓氏,簽名給客戶的動作數量,以及客戶協助的這些動作的數量,但是隻有分配給他的動作(單個動作)。
在這裏你有一個sql fiddle與模式和失敗的SQL我。
- >編輯2: 我找到了另一種獲取數據的方法。在這種情況下,我將所有操作ID分組在一個字段中,並且(在PHP文件中)我將它計數。我有這樣的迴應:
Individual actions: [ { "nombre": "Susana", "apellidos": "Rodr\u00edguez Torr\u00f3n", "acc_convocadas": "2,3,5", "acc_realizadas": "2" }, { "nombre": "Pablo", "apellidos": "Campos P\u00e9rez", "acc_convocadas": "5", "acc_realizadas": "-" }, { "nombre": "Oscar", "apellidos": "Delacroix", "acc_convocadas": "-", "acc_realizadas": "-" } ]
Group actions: [ { "nombre": "Susana", "apellidos": "Rodr\u00edguez Torr\u00f3n", "acc_convocadas": "3,1,4", "acc_realizadas": "-" }, { "nombre": "Pablo", "apellidos": "Campos P\u00e9rez", "acc_convocadas": "-", "acc_realizadas": "-" }, { "nombre": "Oscar", "apellidos": "Delacroix", "acc_convocadas": "3", "acc_realizadas": "-" } ]
這是第
SELECT nombre, apellidos,
IFNULL((SELECT GROUP_CONCAT(id_accion)
FROM inter_clientes_acciones iac
WHERE iac.id_cliente = cl.id AND id_accion IN (
SELECT iauno.id_accion
FROM inter_clientes_acciones iauno
INNER JOIN acciones acuno ON iauno.id_accion = acuno.id
WHERE acuno.id_proyecto = 3
GROUP BY iauno.id_accion
HAVING COUNT(*) > 1
)), "-") as acc_convocadas,
IFNULL((SELECT GROUP_CONCAT(id_accion)
FROM inter_clientes_acciones iac
WHERE iac.id_cliente = cl.id AND asistencia = 1 AND id_accion IN (
SELECT iauno.id_accion
FROM inter_clientes_acciones iauno
INNER JOIN acciones acuno ON iauno.id_accion = acuno.id
WHERE acuno.id_proyecto = 3
GROUP BY iauno.id_accion
HAVING COUNT(*) > 1)), "-") as acc_realizadas
FROM clientes cl
WHERE id_proyecto = 3
如果有人在這裏附近有人幻想選擇這一個,我會感到驚訝(也有點印象深刻)。 – Strawberry
查看我的編輯(我正在寫作) –
我的編輯隨SQL提琴準備就緒 –