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

2 consultas sql

Estas en el tema de 2 consultas sql en el foro de Bases de Datos General en Foros del Web. hola, tengo dos consultas que no puedo solucionar. las tablas son las siguientes: Persona(Nro_Doc, nombre) Proyecto(id_proy, nom_proy) Trabaja(Nro_Doc, id_proy) la primera consulta: Seleccionar nombre de ...
  #1 (permalink)  
Antiguo 04/03/2008, 11:18
Avatar de manyametal  
Fecha de Ingreso: enero-2008
Mensajes: 36
Antigüedad: 16 años, 10 meses
Puntos: 0
2 consultas sql

hola, tengo dos consultas que no puedo solucionar.

las tablas son las siguientes:
Persona(Nro_Doc, nombre)
Proyecto(id_proy, nom_proy)
Trabaja(Nro_Doc, id_proy)

la primera consulta: Seleccionar nombre de persona y en el caso que haya trabajado en un proyecto el nombre del proyecto....Esto sería con un left join pero no se como hacerlo..

la segunda: Seleccionar el nombre de las personas que trabajaron en todos los proyectos.. Esta sería con not exists supongo

gracias
  #2 (permalink)  
Antiguo 06/03/2008, 11:40
 
Fecha de Ingreso: julio-2007
Ubicación: Durango, Mex.
Mensajes: 45
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: 2 consultas sql

Si la relacion es de uno a uno, es decir cada persona solo tieneun proyecto, entonces puedes hacer un select refiriendo ambas tablas y el campo relación, algo asi:

SELECT nombre,nomproy FROM Persona,Proyecto,Trabaja WHERE Persona.Nro_Doc=Trabaja.Nro_Doc AND Proyecto.id_proy=Trabaja.id_proy


para seleccionar una persona en particular, se agrega

AND nombre='$nombre' <---$nombre es la variable que contiene el valor que se esta comparando la sintaxis puede variar de acuerdo a en qué estes programando
  #3 (permalink)  
Antiguo 07/03/2008, 05:32
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 9 meses
Puntos: 13
Re: 2 consultas sql

Persona(Nro_Doc, nombre)
Proyecto(id_proy, nom_proy)
Trabaja(Nro_Doc, id_proy)

select per.nombre, proy.nom_proy
from persona per
left join trabaja t on t.nro_doc = per.nro_doc
left join proyecto proy on proy.id_proy ?= t.id_proy

esto te saca todas las personas y el proyecto en el que han trabajado, si no han trabajado en ningun proyecto sale null

select per.nombre, count(distinct t.id_proy)
from persona per
join trabaja t on t.nro_doc = per.nro_doc
join proyecto proy on proy.id_proy ?= t.id_proy
where count(distinct t.id_proy) = (select count(distinct id_proy) from proyecto);

Esto te saca las personas que hayan trabajado en 'x' proyectos cuando 'x' sea el numero de proyectos que tienes registrado en la tabla proyecto. Es decir han trabajado en todos los proyectos.

Si no entiendes algo...
Un saludo
  #4 (permalink)  
Antiguo 10/03/2008, 21:52
Avatar de manyametal  
Fecha de Ingreso: enero-2008
Mensajes: 36
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: 2 consultas sql

perfecto, 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 14:30.