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

Problema con estructura de una tabla

Estas en el tema de Problema con estructura de una tabla en el foro de SQL Server en Foros del Web. Hola, que tal, estoy trabajando sobre una tabla que tiene esta información; tres campos (Equipos1, Puerto1,Equipos2) Ej; a001, hb, C256 a001, gf, u752 t856, re, ...
  #1 (permalink)  
Antiguo 16/06/2014, 14:28
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 13 años, 5 meses
Puntos: 1
Problema con estructura de una tabla

Hola, que tal, estoy trabajando sobre una tabla que tiene esta información; tres campos (Equipos1, Puerto1,Equipos2)

Ej;

a001, hb, C256
a001, gf, u752
t856, re, w963
c256, oj, a001
w785, er, l459
w459, ux, t856


Esta tabla trae equipo, su puerto y a que equipo está conectado. La consigna es traer además de estos tres items, el puerto del equipo 2 que está alojado en la primer columna equipos junto a los de equipos2, lo cual al hacer esta consulta:


Código XML:
Ver original
  1. Select
  2.     h1.Equipos1,
  3.     h1.Puerto1,
  4.     h2.Puerto2,
  5.     h1.Equipos2
  6. from
  7.     Hoja2$ h1
  8. Left  join
  9.     Hoja2$ h2
  10. on
  11.         h1.Equipos = h2.Equipos2
  12.         and h2.Equipos = H1.Equipos2
[/CODE]


...al tener la información de los puertos en la misma columna tanto para los equipos1 como los 2, me trae el trazado de ida con el de vuelta lo cual el de vuelta no lo estaría necesitando, ej;

a001, hb, C256
c256, oj, a001


Sobre esta informacion solo necesitaria:

a001, hb, oj, c256

y me trae

a001, hb, oj, c256 y c256, oj, hb, a001

Quisiera que solo traiga el trazado y que omita el de vuelta ya que trae la misma información.


Saludos!

Última edición por gnzsoloyo; 17/06/2014 a las 09:36
  #2 (permalink)  
Antiguo 16/06/2014, 14:40
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problema con estructura de una tabla

no entiendo mucho tu referencia pero puedes hacer esto:

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. dato1 VARCHAR(20),
  4. dato2 VARCHAR(20),
  5. dato3 VARCHAR(20)
  6. )
  7.  
  8. INSERT INTO #temp VALUES ('a001','hb','C256')
  9. INSERT INTO #temp VALUES ('a001','gf','u752')
  10. INSERT INTO #temp VALUES ('t856','re','w963')
  11. INSERT INTO #temp VALUES ('c256','oj','a001')
  12. INSERT INTO #temp VALUES ('w785','er','l459')
  13. INSERT INTO #temp VALUES ('w459','ux','t856')
  14.  
  15. SELECT t1.dato1,t1.dato2,t2.dato2,t2.dato1 FROM #temp AS t1
  16. LEFT JOIN #temp AS t2 ON (t1.dato3=t2.dato1)
  17. WHERE t2.dato2 IS NOT NULL

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 16/06/2014, 14:58
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con estructura de una tabla

No, los datos ya están en la base. De los tres items, necesitaría traer un extra que es el puerto 2 del equipo 2 (Equipo1, Puerto1, Puerto 1(del equipo 2) y equipo2)

Se me ocurrió hacer un join a la misma tabla donde relaciono al equipo1 con el equipo2 del clon de la otra tabla y el equipo1 de esa tabla con el equipo2 de la primera, ej;

h1.Equipos1 = h2.Equipos2
and h2.Equipos1 = H1.Equipos2

ej,

equipo 1: a001,
puerto1: hb,
equipo 2:C256

equipo1: c256,
puerto1: oj,
equipo2: a001


Si a001 esta en el equipo2(a001) del clon de la tabla y equipo1(c256) de esta tabla esta en el equipo 2(c256) de la otra, traer equipo1(a001), puerto1(hb), puerto1(oj, tabla relacionada) y equipo 2 (c256)

El problema está cuando hace el mismo proceso pero a la inversa porque recordemos que los equipos2 estan en la misma columna que los equipos 1 donde se encuentra la informacion de sus puertos (mal estructura de la tabla) con c256, oj y a0001, me vuelve a traer los mismos datos pero a la inversa, esto es lo que quiero evitar.
  #4 (permalink)  
Antiguo 16/06/2014, 15:04
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problema con estructura de una tabla

Cita:
Iniciado por t0n1 Ver Mensaje
No, los datos ya están en la base.
Y quien te dice que no, uso una #temp table para que entiendas lo que debes hacer ya que no tengo la estructura de tus tablas ni tus datos....si te fijas en el ejemplo que te di se consigue lo que necesitas no????
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 16/06/2014, 21:30
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con estructura de una tabla

Claro, funciona con ese ejemplo fallido que puse pero la disposción de los datos no es esa. Mala mía.

Pongo una captura:



Última edición por t0n1; 16/06/2014 a las 21:48
  #6 (permalink)  
Antiguo 17/06/2014, 07:35
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problema con estructura de una tabla

pero ya probaste ese ejemplo contra tus datos?? creo que no.....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 17/06/2014, 07:56
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con estructura de una tabla

Sí, sí, lo probé de esta manera siguiendo tu ejemplo:
Código SQL:
Ver original
  1. SELECT
  2.     h1.Equipos,
  3.     h1.Puerto,
  4.     h2.Puerto,
  5.     h2.Equipos
  6. FROM
  7.     Hoja2$ h1
  8. LEFT  JOIN
  9.     Hoja2$ h2
  10. ON
  11.         h1.Equipos2 = h2.Equipos
[/CODE]


Y me trae dos mil registros con muchos duplicados y el recorrido inverso que quiero evitar.

Última edición por gnzsoloyo; 17/06/2014 a las 09:37
  #8 (permalink)  
Antiguo 17/06/2014, 08:04
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problema con estructura de una tabla

ahora podrias explicar, que entiendes por recorrido inverso??? usa mi ejemplo y di que es lo que esta mal ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 17/06/2014, 08:08
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con estructura de una tabla

Cita:
Iniciado por Libras Ver Mensaje
ahora podrias explicar, que entiendes por recorrido inverso??? usa mi ejemplo y di que es lo que esta mal ;)

El recorrido inverso lo explique más arriba. Con la query que armé me trae la trama del equipo 1 al equipo 2, con sus puertos (que es la consigna deseada) pero también me trae el recorrido del equipo 2 al equipo 1 de esos mismos datos también con sus puertos. Esta sería información que no me haría falta.

El ejemplo que pusiste no me sirve porque tengo que consultar 500 registros y no me voy a poner a armar una tabla temporal registro por registro. Ese ejemplo que puse con los datos era figurativo.
  #10 (permalink)  
Antiguo 17/06/2014, 10:31
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problema con estructura de una tabla

mi respuesta tambien era figurativa, lo que necesitas creo que no se puede hacer con un query sencillo....seria hacer un ciclo para ir revisando renglon por renglon si los registros de ida y vuelta no repiten....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 17/06/2014 a las 11:23
  #11 (permalink)  
Antiguo 17/06/2014, 12:16
 
Fecha de Ingreso: noviembre-2010
Mensajes: 175
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Problema con estructura de una tabla

Claro, por eso! Me imaginaba : (

Etiquetas: estructura, select, tabla
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 19:32.