Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Devolver varios campos de una subquery

Estas en el tema de Devolver varios campos de una subquery en el foro de Bases de Datos General en Foros del Web. Hola a todos, tengo un problema gordo que no se resolver y me urge a ver si podeis echarme una mano. Tengo una bbdd con ...
  #1 (permalink)  
Antiguo 23/07/2008, 04:48
 
Fecha de Ingreso: julio-2008
Mensajes: 5
Antigüedad: 16 años, 4 meses
Puntos: 1
Pregunta Devolver varios campos de una subquery

Hola a todos, tengo un problema gordo que no se resolver y me urge a ver si podeis echarme una mano. Tengo una bbdd con 3 tablas:

Grupo (id_grupo, nombre)
1, Programadores
2, Diseñadores
3, Gerencia
Trabajo (id_trabajo,trabajo)
101, Web jamoneros
102, Aplicación lanchas
103, Buscador php
Nexo (id_grupo*, id_trabajo*)
101, 1
101, 2
101, 3
102, 2
103, 1
Siendo primary keys todas las que son id_*.
Un trabajo pudieron hacerlo uno o varios grupos lo cual se reflejará en la tablar nexo.
Quiero saber en que trabajos solo ha participado un grupo, que yo elijo y sacar la lista de todos los id_trabajo como resultado.

Estoy trabajando sobre esto:

SELECT n.id_trabajo, trabajo FROM nexo n WHERE
n.id_trabajo IN
(SELECT n.id_trabajo FROM trabajo t,grupo g, nexo n
WHERE (t.id_trabajo=n.id_trabajo AND n.id_grupo=g.id_grupo) AND g.grupo
LIKE ‘Programadores')
AND 1=(SELECT count(n.id_grupo)=1 FROM nexo n WHERE
n.id_trabajo IN
(SELECT n.id_trabajo FROM trabajo t,grupo g, nexo n WHERE
(t.id_trabajo=n.id_trabajo AND n.id_grupo=g.id_grupo) AND g.grupo
LIKE ‘Programadores')
);

Pero el AND 1=(SELECT count(n.id_grupo)=1 FROM no vale para nada porque no solo necesito sacarle el numero de grupos que participan sino de que trabajo se trata y:
AND 1=(SELECT n.id_trabajo,count(n.id_grupo)=1 logicamente no deja.

Seguro que hay varias formas de afrontar esta query me vale cualquier ayuda.
Muchísimas gracias
  #2 (permalink)  
Antiguo 23/07/2008, 07:20
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Respuesta: Devolver varios campos de una subquery

Vale, es facil no te agobies.

Cita:
Quiero saber en que trabajos solo ha participado un grupo, que yo elijo y sacar la lista de todos los id_trabajo como resultado.
Esto no me queda muy claro, con los datos de ejemplo puedes ponerme un ejemplo y el resultado esperado?

Salu2
  #3 (permalink)  
Antiguo 23/07/2008, 13:21
 
Fecha de Ingreso: julio-2008
Mensajes: 5
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Devolver varios campos de una subquery

Si claro, por ejemplo quiero saber que trabajo han hecho los "Programadores" sin la participación de otros grupos.

Los programadores participarón en:
101, Web jamoneros (programadores,diseñadores,gerencia)
103, Buscador php (programadores)

Pero solo me interesa como resultado el 103 porque no participaron otros grupos.

Espero haberme explicado con claridad.
Gracias
  #4 (permalink)  
Antiguo 24/07/2008, 03:24
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Respuesta: Devolver varios campos de una subquery

Esta sería la select general:
Código:
select  t.id_trabajo, trabajo, nombre
from    nexo n
        join trabajo t      on t.id_trabajo = n.id_trabajo
        join grupo g        on g.id_grupo = n.id_grupo
Con esta select sacas los trabajos en los que solo ha participado un grupo
Código:
select  id_trabajo
from    nexo n
group by id_trabajo
having count(*) = 1
Si las "unimos" y le añadimos el filtro:
Código:
select  t.id_trabajo, trabajo, nombre
from    nexo n
        join trabajo t      		on t.id_trabajo = n.id_trabajo
        join grupo g        		on g.id_grupo = n.id_grupo
        join (select  id_trabajo
			from    nexo n
			group by id_trabajo
			having count(*) = 1
        	) unicos            	on unicos.id_trabajo = t.id_trabajo
where   nombre = 'Programadores'
Guala!

A que no era tan dificil?

Salu2
  #5 (permalink)  
Antiguo 25/07/2008, 07:05
 
Fecha de Ingreso: julio-2008
Mensajes: 5
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Devolver varios campos de una subquery

Por pasos se ve más sencillo, gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:12.