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

Obtener registro de una tabla relacionada con otra que es la principal

Estas en el tema de Obtener registro de una tabla relacionada con otra que es la principal en el foro de SQL Server en Foros del Web. Muy buenas, estoy intentando obtener un registro de una descripcion que se encuentra en una tabla de la que unicamente voy a obtener ese registro, ...
  #1 (permalink)  
Antiguo 12/12/2007, 04:51
 
Fecha de Ingreso: junio-2007
Mensajes: 24
Antigüedad: 17 años, 6 meses
Puntos: 0
Obtener registro de una tabla relacionada con otra que es la principal

Muy buenas, estoy intentando obtener un registro de una descripcion que se encuentra en una tabla de la que unicamente voy a obtener ese registro, el inner join ya lo he echo pero ahora no se como obtener dicho registro. Mi select es tremendamente compleja y estoy relacionando 5 tablas asi que os pongo un ejemplo sobre el cual podria entenderlo....


SELECT campo1, campo2, campo3, registro3 FROM (SELECT dato1, dato2, dato3) FROM TABLA1 UNION SELECT dato1, dato2, dato3, registro3 FROM TABLA2 INNER JOIN tabla2 ON dato1 = registro 1 AND dato2 = registro2.

TABLA 1 --------------------------- TABLA2
campo1 (id) --------------------- registro1 (id)
campo2 (id2) -------------------- registro2 (id2)
campo3 ("") ---------------------- registro3 ("")

...el problema es que yo intento incluir "registro3" en la select y me dice: Invalid column.

Gracias de antemano. Un saludo
  #2 (permalink)  
Antiguo 12/12/2007, 06:39
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 24 años, 2 meses
Puntos: 3
Re: Obtener registro de una tabla relacionada con otra que es la principal

Hola, lo que pasa es que en el primer select no defines "registro3" y en el segundo select sí. Para hacer el union debes tener campos equivalentes en los dos select.

Además hay un paréntesis mal cerrado

saludoss
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #3 (permalink)  
Antiguo 12/12/2007, 06:57
 
Fecha de Ingreso: junio-2007
Mensajes: 24
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Obtener registro de una tabla relacionada con otra que es la principal

Gracias por la rapida respuesta..si perdon seria asi como lo tengo estructurado (se me ha ido la olla) ....

SELECT campo1, campo2, campo3, registro3 FROM (SELECT campo1, campo2, campo3, registro3 FROM TABLA1 UNION SELECT campo1, campo2, campo3, registro3 FROM TABLA3* INNER JOIN TABLA2 ON campo1(TABLA3)= registro 1 AND campo2(TABLA3)= registro2)

TABLA3 es otra tabla que tengo cruzada tb...sigue sin estar definido registro3??

Muchas gracias Matrix!!!
  #4 (permalink)  
Antiguo 12/12/2007, 07:06
 
Fecha de Ingreso: junio-2007
Mensajes: 24
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Obtener registro de una tabla relacionada con otra que es la principal

Esta es la select original por si te sirve de algo....es un chorizo que no veas....

"select sum(CONTROL) AS CONTROL, PCFA_OrigenADG, PCFA_IDCLASE, PCFA_IDSUPERCLASE,
AGPR_IDAGRUPACION, PCFA_IDPEFJ, PCFA_ID ,PCFA_FPC1,PCFA_FPC2, PCFA_FPC3,PCFA_FPC4,
PCFA_FPC5,PCFA_FPP1, PCFA_FPP2, PCFA_PPC, PCFA_DptoHomolog, PCFA_FHomologa
FROM (SELECT PCFA_OrigenADG, PCFA_IDCLASE,PCFA_IDSUPERCLASE, '" & IdAgrupacion & "'
AS AGPR_IDAGRUPACION,PCFA_IDPEFJ, PCFA_FPC1, PCFA_FPC2, PCFA_FPC3,PCFA_FPC4,PCFA_FPC5,
PCFA_FPP1 , PCFA_FPP2, PCFA_PPC, PCFA_DptoHomolog, CONVERT(varchar,PCFA_FHomologa,105)as PCFA_FHomologa, PCFA_ID,
1 as CONTROL FROM ^^UM_BPEFJCLASESFACTORES WHERE PCFA_OrigenADG ='" & tipoAgrupacion & "' AND PCFA_IDPEFJ = '" & idpefj & "'
UNION SELECT '" & tipoAgrupacion & "' AS PCFA_OrigenADG,PR00_IDCLASE AS PCFA_IDCLASE,
PR00_IDSUPERCLASE AS PCFA_IDSUPERCLASE,'" & IdAgrupacion & "' AS AGPR_IDAGRUPACION, '" & idpefj & "' AS PCFA_IDPEFJ, " _
PCFA_FPC1,PCFA_FPC2, PCFA_FPC3,PCFA_FPC4,PCFA_FPC5, PCFA_FPP1 , PCFA_FPP2, PCFA_PPC,
PCFA_DptoHomolog, PCFA_ID, CONVERT(varchar,PCFA_FHomologa,105)as FHomologa, 2 AS CONTROL FROM ^^UM_BPR00 INNER JOIN ^^UM_BPR00EQUIV ON PREQ_IDPRODUCTO = PR00_IDPRODUCTO AND PREQ_IDPRODUCTOEQ = PREQ_IDPRODUCTO
INNER JOIN ^^UM_BCLASES ON CLAS_IDSUPERCLASE = PR00_IDSUPERCLASE AND CLAS_IDCLASE = PR00_IDCLASE
INNER JOIN ^^UM_BAGRUPROD ON AGPR_IDPRODUCTO = PR00_IDPRODUCTO
INNER JOIN ^^UM_BAGRUPDEPAR ON AGRU_IDAGRUPACION = AGPR_IDAGRUPACION INNER JOIN ^^UM_BDEPARTAMENTOS ON AGRU_IDDEPARTAMENTO = DEPA_IDDEPARTAMENTO INNER JOIN ^^UM_BPV02 ON PV02_IDPRODUCTO = PR00_IDPRODUCTO LEFT JOIN ^^UM_BPEFJCLASESFACTORES ON PCFA_IDCLASE = PR00_IDCLASE AND PCFA_IDSUPERCLASE = PR00_IDSUPERCLASE WHERE " & condicion & " = '" & IdAgrupacion & "' AND '" & idpefj & "' = PV02_IDPEFJ) as AUX GROUP BY PCFA_OrigenADG, PCFA_IDCLASE, PCFA_IDSUPERCLASE,AGPR_IDAGRUPACION,PCFA_IDPEFJ,PC FA_ID ,PCFA_FPC1,PCFA_FPC2, PCFA_FPC3,PCFA_FPC4,PCFA_FPC5,PCFA_FPP1 , PCFA_FPP2, PCFA_PPC, PCFA_DptoHomolog, PCFA_FHomologa "
...........^^UM_* son las tablas y me traigo una serie de variables para comparar con los campos. Es solo para que te hagas una idea de como va. Muchas gracias tio!
  #5 (permalink)  
Antiguo 12/12/2007, 07:19
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 24 años, 2 meses
Puntos: 3
Re: Obtener registro de una tabla relacionada con otra que es la principal

holaa,

no estará repetido registro3 en tabla 2 y tabla3? eso daría un error como ese.
si tiras la subconsulta sola te da error?
que campo te da error de la consulta verdadera?

saludoss
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #6 (permalink)  
Antiguo 12/12/2007, 07:57
 
Fecha de Ingreso: junio-2007
Mensajes: 24
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Obtener registro de una tabla relacionada con otra que es la principal

En la select real que te he puesto no esta metido el campo que me quiero traer (CLAS_DESCRIPCION de la tabla ^^UM_BCLASES) de tabla2 en nuestro ejemplo, pero AGPR_IDAGRUPACION tb viene de otra tabla y no me da error. La subconsulta funciona bien y la consulta tb y tampoco esta repetido.

El campo que me quiero traer es CLAS_DESCRIPCION dentro de la tabla ^^UM_BCLASES que tiene su INNER JOIN por ahi pero no estoy comparando CLAS_DESCRIPCION de esa tabla, sino CLAS_IDCLASE con PR00_IDCLASE de la tabla que nosotros hemos llamado al principio tabla3 y es ^^UM_BPR00 en realidad. El fallo puede ser ese o tb puede que sea que no estoy comparando ^^UM_BCLASES con ^^UM_BPEFJCLASESFACTORES (tabla1, tabla original de la select), pero claro esto no lo podria hacer porque no tiene un campo equivalente, es decir con el mismo tipo de registros sobre esa descripcion.

No se es que es muy complejo tampoco te quiero hacer que te comas la cabeza, pero gracias.
  #7 (permalink)  
Antiguo 12/12/2007, 07:59
 
Fecha de Ingreso: junio-2007
Mensajes: 24
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Obtener registro de una tabla relacionada con otra que es la principal

Te lo puedo decir de otra manera, sobre la select real como podria añadir al campo CLAS_DESCRIPCION de la tabla ^^UM_BCLASES al array? Es el unico campo que me traigo de ^^UM_BCLASES, los demas son solo para llegar a ese. Muchas gracias!
  #8 (permalink)  
Antiguo 12/12/2007, 13:21
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 24 años, 2 meses
Puntos: 3
Re: Obtener registro de una tabla relacionada con otra que es la principal

hola maximal, deberia poder agregarse asi,
aunque para la primera parte del UNION no existe ese campo por lo que quedariia en NULL, pongo en negra lo modificado

select sum(CONTROL) AS CONTROL, PCFA_OrigenADG, PCFA_IDCLASE, PCFA_IDSUPERCLASE,
AGPR_IDAGRUPACION, PCFA_IDPEFJ, PCFA_ID ,PCFA_FPC1,PCFA_FPC2, PCFA_FPC3,PCFA_FPC4,
PCFA_FPC5,PCFA_FPP1, PCFA_FPP2, PCFA_PPC, PCFA_DptoHomolog, PCFA_FHomologa,
CLAS_DESCRIPCION
FROM (
SELECT PCFA_OrigenADG, PCFA_IDCLASE,PCFA_IDSUPERCLASE, '" & IdAgrupacion & "'
AS AGPR_IDAGRUPACION,PCFA_IDPEFJ, PCFA_FPC1, PCFA_FPC2, PCFA_FPC3,PCFA_FPC4,PCFA_FPC5,
PCFA_FPP1 , PCFA_FPP2, PCFA_PPC, PCFA_DptoHomolog, CONVERT(varchar,PCFA_FHomologa,105)as PCFA_FHomologa, PCFA_ID,
1 as CONTROL, NULL AS CLAS_DESCRIPCION
FROM ^^UM_BPEFJCLASESFACTORES WHERE PCFA_OrigenADG ='" & tipoAgrupacion & "'
AND PCFA_IDPEFJ = '" & idpefj & "'
UNION SELECT '" & tipoAgrupacion & "' AS PCFA_OrigenADG,PR00_IDCLASE AS PCFA_IDCLASE,
PR00_IDSUPERCLASE AS PCFA_IDSUPERCLASE,'" & IdAgrupacion & "' AS AGPR_IDAGRUPACION, '" & idpefj & "' AS PCFA_IDPEFJ, " _
PCFA_FPC1,PCFA_FPC2, PCFA_FPC3,PCFA_FPC4,PCFA_FPC5, PCFA_FPP1 , PCFA_FPP2, PCFA_PPC,
PCFA_DptoHomolog, PCFA_ID, CONVERT(varchar,PCFA_FHomologa,105)as FHomologa, 2 AS CONTROL
,CLAS_DESCRIPCION
FROM ^^UM_BPR00
INNER JOIN ^^UM_BPR00EQUIV ON PREQ_IDPRODUCTO = PR00_IDPRODUCTO AND PREQ_IDPRODUCTOEQ = PREQ_IDPRODUCTO
INNER JOIN ^^UM_BCLASES ON CLAS_IDSUPERCLASE = PR00_IDSUPERCLASE AND CLAS_IDCLASE = PR00_IDCLASE
INNER JOIN ^^UM_BAGRUPROD ON AGPR_IDPRODUCTO = PR00_IDPRODUCTO
INNER JOIN ^^UM_BAGRUPDEPAR ON AGRU_IDAGRUPACION = AGPR_IDAGRUPACION
INNER JOIN ^^UM_BDEPARTAMENTOS ON AGRU_IDDEPARTAMENTO = DEPA_IDDEPARTAMENTO
INNER JOIN ^^UM_BPV02 ON PV02_IDPRODUCTO = PR00_IDPRODUCTO
LEFT JOIN ^^UM_BPEFJCLASESFACTORES ON PCFA_IDCLASE = PR00_IDCLASE AND PCFA_IDSUPERCLASE = PR00_IDSUPERCLASE
WHERE " & condicion & " = '" & IdAgrupacion & "' AND '" & idpefj & "' = PV02_IDPEFJ
) as AUX
GROUP BY PCFA_OrigenADG, PCFA_IDCLASE, PCFA_IDSUPERCLASE,AGPR_IDAGRUPACION,PCFA_IDPEFJ,
PC , FA_ID ,PCFA_FPC1,PCFA_FPC2, PCFA_FPC3,PCFA_FPC4,PCFA_FPC5,PCFA_FPP1 , PCFA_FPP2, PCFA_PPC, PCFA_DptoHomolog, PCFA_FHomologa


no se si te sirva.
esas como gaviotas que van delante de las tablas para que son??

saludoss
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #9 (permalink)  
Antiguo 13/12/2007, 06:05
 
Fecha de Ingreso: junio-2007
Mensajes: 24
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Obtener registro de una tabla relacionada con otra que es la principal

Joe muchas gracias compadre, justo te iba a decir que lo he resuelto de esa misma manera, pero donde tu as puesto NULL AS, yo he puesto ' ' AS y si me muestra la descripcion bien. Lo unico que creo que te falta al final del todo de la select justo antes de las " de cierre CLAS_DESCRIPCION pero bueno me esta funcionando asi que genial. Creo que mi fallo era precisamente lo de NULL AS o ' ' AS, Muchas gracias por tu atencion y respuestas!!!
  #10 (permalink)  
Antiguo 13/12/2007, 06:08
 
Fecha de Ingreso: junio-2007
Mensajes: 24
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: Obtener registro de una tabla relacionada con otra que es la principal

Ah lo de las gaviotas son el simbolo de arriba de abrir corchete ( al lado de la P), es que en mi aplicacion "^^UM_" se refiere al nombre de la base de datos y asi no tengo que estar todo el rato escribiendo el nombre de la BD. Siempre que pongo ^^UM_* ya sabe que se trata de una tabla de mi BD. Gracias tio, un cordial saludo!
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 00:22.