SQL - Consulta SQL complicada

 
Vista:

Consulta SQL complicada

Publicado por Diego (2 intervenciones) el 18/02/2008 17:43:46
Estimados amigos, espero que puedan ayudarme con esta consulta SQL:

Tengo dos tablas relacionadas, con los siguientes campos:

GRUPOS
-------------
idgrupo
grupo

PRODUCTOS
-------------------
idproducto
idgrupo
producto

La relación es que el campo idgrupo de PRODUCTOS ha de existir en la tabla GRUPOS.

Pues bien, necesito un SELECT que me devuelva un listado de los diferentes idgrupo, grupo, de la siguiente manera:

1ºcolumna: idgrupo
2ºcolumna: grupo
3ºcolumna (y aquí está la complicación): TRUE si idgrupo existe en PRODUCTOS y FALSE si idgrupo no existe en PRODUCTOS.

Espero haberme explicado.
Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Consulta SQL complicada

Publicado por Isaias (5072 intervenciones) el 18/02/2008 21:59:43
¿Que base de datos estas manejando?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta SQL complicada

Publicado por Leo (16 intervenciones) el 19/02/2008 00:09:09
Hola!

Lo siguiente funciona al menos en PostgreSql y como usa sólo instrucciones standart es probable que funcione en cualquiera.

(
select idgrupo,grupo,true as existe
from grupo
where idgrupo in (select idgrupo from productos)
)
union
(
select idgrupo,grupo,false as existe
from grupo
where idgrupo not in (select idgrupo from productos)
)

Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta SQL complicada

Publicado por orlando (5 intervenciones) el 19/02/2008 01:42:22
Que tal esta propuesta, avisame si te sirve:

SELECT grupos.idgrupo, nombregrupo,
case when (Select Count(productos.idgrupo) from productos where grupos.idgrupo=productos.idgrupo)>0 then 'true'
when (Select Count(productos.idgrupo) from productos where grupos.idgrupo=productos.idgrupo)=0 then 'false'
end
from grupos left join productos
on productos.idgrupo = grupos.idgrupo
group by nombregrupo, grupos.idgrupo
order by grupos.idgrupo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta SQL complicada

Publicado por Diego (2 intervenciones) el 19/02/2008 13:39:54
Ambas soluciones son válidas. Muchas gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar