Problema con subconstultas correlacionadas

Problema con subconstultas correlacionadas

Hola cuando ejecuto esta consulta:

SELECT l.id_licitacion, c.nombre,
(select (CASE WHEN Count(*)>1 THEN 'Varios'
WHEN Count(*)<=1 THEN (select tf.descripcion from tipo_familia tf where tf.id_tipo_familia = lf.id_tipo_familia)
END)
FROM licitaciones_familias lf
WHERE lf.id_licitacion = l.id_licitacion)

FROM licitaciones l
INNER JOIN clientes c ON c.id_cliente = l.id_cliente

me da el siguiente error:
subquery uses ungrouped column "lf.id_tipo_familia" from outer query

y no tengo ni idea de cómo solucionarlo, a ver si me podeis echar una mano.

Muchas gracias por todo
Saludos
Fran

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de rafaelma

Re: Problema con subconstultas correlacionadas

Esto ocurre por usar lf.id_tipo_familia en el subselect definido en WHEN...THEN...END, cuando 'lf' esta definido en el FROM posterior. Supongo que porque 'lf' no existe cuando el 'parser' interpreta tu sentencia SQL.

Supongo que podrias reescribir la consulta de esta manera:

SELECT 
l.id_licitacion, 
c.nombre,
(CASE WHEN Count(*)>1 THEN 'Varios'
WHEN Count(*)<=1 THEN 
(SELECT tf.descripcion 
FROM tipo_familia tf 
WHERE tf.id_tipo_familia = lf.id_tipo_familia)
END)
FROM(
SELECT *
FROM licitaciones_familias lf
INNER JOIN licitaciones l ON (lf.id_licitacion = l.id_licitacion)
INNER JOIN clientes c ON (c.id_cliente = l.id_cliente)
)

Ya contaras
--
Rafael Martinez
Webmaster

Gracias por contestar pero

Gracias por contestar pero tampoco me funciona, al final lo he resuelto de otra forma, en lugar de mostrar 'varios' muestro un array con el listado de familias.

saludos
Fran

Enviar nuevo comentario

  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><h2><pre>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato

Image CAPTCHA
Enter the characters shown in the image.