Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-05-2006
mcrz2 mcrz2 is offline
Registrado
 
Registrado: may 2006
Posts: 2
Poder: 0
mcrz2 Va por buen camino
Consulta con dos relaciones a la misma tabla

Hola a todos,

Tengo una tabla en la que guardo un listado de proyectos. Cada proyecto está relacionado con dos empresas (las empresas las almaceno en una tabla al efecto), cuyos códigos guardo en sendos campos de la tabla de proyectos. Mi problema surge al generar una consulta para obtener un proyecto y los nombres de ambas empresas a través de sus códigos. Lo único que he conseguido con las consultas son dos filas en las que me aparece el mismo proyecto una con el nombre de una empresa y otro con la segunda. ¿Cómo puedo conseguir una consulta en la que me aparezca una sola fila por proyecto con los nombres de ambas empresas?

Garcias por adelantado. Un cordial saludo.
Responder Con Cita
  #2  
Antiguo 18-05-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Puedes poner la consulta que estás utilizando actualmente?
Será más fácil entender el problema y darte una solución (que pasa por usar dos Alias distintos para la misma tabla), pero será más fácil sobre tu ejemplo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 18-05-2006
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
edito: esto es un ejemplo de lo que menciona Neftali (que me paso desapercibido cuando lo leí)
Código SQL [-]
select ....
from Tabla T, Empresas E1, Empresas E2
where ClaveEMpresa1 = E1.Clave
and ClaveEmpresa2= E2.Clave


espero que eso te de una idea
__________________


Última edición por ContraVeneno fecha: 18-05-2006 a las 19:00:50.
Responder Con Cita
  #4  
Antiguo 23-05-2006
mcrz2 mcrz2 is offline
Registrado
 
Registrado: may 2006
Posts: 2
Poder: 0
mcrz2 Va por buen camino
Gracias por la respuesta.

Voy a tratar de resumir brevemente lo que tengo
La estructura básica de mis tablas son:

TABLA PROYECTOS

ProCodigo int;
ProNobre varchar;
ProEmp1 int;
ProEmp2 int;

TABLA EMPRESAS

EmpCodigo int;
EmpNombre varchar;

Como comenté anteriormente, en los campos ProEmp1 y ProEmp2 de la tabla de proyectos guardo las referencias a los códigos de dos empresas diferentes ambas almacenadas en la tabla EMPRESAS

Mis "cortos" conocimientos de SQL me llevan hasta uno de los dos siguientes casos:

Caso 1

Código SQL [-]
select PROYECTOS.ProCodigo, EMPRESAS.EmpNombre
from PROYECTOS, EMPRESAS
where ((PROYECTOS.ProEmp1=EMPRESAS.EmpCodigo) AND
 (PROYECTOS.ProEmp2=EMPRESAS.EmpCodigo))

Caso 2

Código SQL [-]
select PROYECTOS.ProCodigo, EMPRESAS.EmpNombre
from PROYECTOS, EMPRESAS
where ((PROYECTOS.ProEmp1=EMPRESAS.EmpCodigo) OR
 (PROYECTOS.ProEmp2=EMPRESAS.EmpCodigo))

El caso uno no devuelve filas. El caso 2 devuelve dos filas por Proyecto.
Lo que necesito sería obtener un resultado como el siguiente


Fila 1: Proyecto1, Nombre Empresa1 del Proyecto 1, Nombre Empresa2 del Proyecto 1

Fila 2: Proyecto2, Nombre Empresa1 del Proyecto 2, Nombre Empresa2 del Proyecto 2
.
.
.

Fila N: ProyectoN, Nombre Empresa1 del Proyecto N, Nombre Empresa2 del Proyecto N.

Espero haber aclarado mi problema.

Un cordial saludo
Responder Con Cita
  #5  
Antiguo 23-05-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Se trata de usar Alias con la tabla de empresa; Algo así:

Código SQL [-]
SELECT PROYECTOS.ProCodigo, EMPRESAS.EmpNombre, EMPRESAS_1.EmpNombre
FROM 
(PROYECTOS INNER JOIN EMPRESAS 
ON PROYECTOS.ProEmp1 = EMPRESAS.EmpCodigo) 
INNER JOIN EMPRESAS AS EMPRESAS_1 
ON PROYECTOS.ProEmp2 = EMPRESAS_1.EmpCodigo
WHERE (PROYECTOS.ProCodigo=1)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problemas cuando varios usuarios hacen un consulta a la misma tabla Salomon Conexión con bases de datos 2 13-06-2007 04:36:02
consulta con dos tablas con misma estructura AbcXxx SQL 8 30-06-2006 22:06:13
Unir una tabla consigo misma sitrico SQL 2 19-04-2005 00:06:03
Update de Campos en la Misma Tabla Jvilomar SQL 1 05-04-2005 17:35:05
Subconsulta a la misma tabla apicito SQL 3 23-07-2004 21:24:24


La franja horaria es GMT +2. Ahora son las 14:14:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi