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

Duda con subconsulta

Estas en el tema de Duda con subconsulta en el foro de SQL Server en Foros del Web. Tengo la siguiente sentencia, donde no puedo lograr imprimir el "NOMBRE_SUCURSAL" a partir del ID_SUCURSAL de la primera tabla. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original ...
  #1 (permalink)  
Antiguo 03/01/2013, 12:13
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Duda con subconsulta

Tengo la siguiente sentencia, donde no puedo lograr imprimir el "NOMBRE_SUCURSAL" a partir del ID_SUCURSAL de la primera tabla.

Código SQL:
Ver original
  1. SELECT ID,ID_SUCURSAL,CATEGORIA,NOMBRE,IMG_UP,IMG_OVER,IMG_DETALLE,IMG_DETALLE_BIG,IMG_DETALLE_PLANO,ACTIVO,DESCRIPCION,ORDEN,OBSERVACIONES,NOTA1,NOTA2,PLAZO,VACIO FROM AMBIENT_IMG
  2. AS E WHERE EXISTS
  3. (SELECT ID_SUCURSAL,NOMBRE_SUCURSAL FROM AMBIENTES_SUC AS O WHERE O.ID_SUCURSAL = E.ID_SUCURSAL);
Lo intente con INNER JOIN, UNION y algunos operadores mas pero no hay caso. Alguien que tire alguna idea?

Última edición por gnzsoloyo; 03/01/2013 a las 13:40 Razón: Código SQL sin etiqeutar. Usar Highlight "SQL"
  #2 (permalink)  
Antiguo 03/01/2013, 13:01
 
Fecha de Ingreso: diciembre-2012
Mensajes: 83
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Duda con subconsulta

Intenta con esta

Código SQL:
Ver original
  1. SELECT a.*, b.NOMBRE_SUCURSAL FROM(
  2. SELECT ID,ID_SUCURSAL,CATEGORIA,NOMBRE,IMG_UP,IMG_OVER,IM G_DETALLE,IMG_DETALLE_BIG,IMG_DETALLE_PLANO,
  3. ACTIVO ,DESCRIPCION,ORDEN,OBSERVACIONES,NOTA1,NOTA2,PLAZO ,VACIO FROM AMBIENT_IMG) AS a
  4. LEFT JOIN(
  5. SELECT ID_SUCURSAL,NOMBRE_SUCURSAL FROM AMBIENTES_SUC) AS b
  6. ON a.ID_SUCURSAL = b.ID_SUCURSAL;

Última edición por gnzsoloyo; 03/01/2013 a las 13:40 Razón: Código SQL sin etiqeutar. Usar Highlight "SQL"
  #3 (permalink)  
Antiguo 03/01/2013, 13:03
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: Duda con subconsulta

y esto no funciona:


Código SQL:
Ver original
  1. SELECT * FROM  AMBIENT_IMG AS E
  2. INNER JOIN  AMBIENTES_SUC AS O WHERE O.ID_SUCURSAL = E.ID_SUCURSAL

saludos!
__________________
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 gnzsoloyo; 03/01/2013 a las 13:40 Razón: Código SQL sin etiqeutar. Usar Highlight "SQL"
  #4 (permalink)  
Antiguo 03/01/2013, 13:06
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Duda con subconsulta

Finalmente lo logre mediante esta consulta:

Código SQL:
Ver original
  1. SELECT ID,ID_SUCURSAL,NOMBRE_SUCURSAL = (SELECT NOMBRE_SUCURSAL FROM AMBIENTES_SUC WHERE ID_SUCURSAL = AMBIENT_IMG.ID_SUCURSAL),CATEGORIA,NOMBRE,IMG_UP,IMG_OVER,IMG_DETALLE,IMG_DETALLE_BIG,IMG_DETALLE_PLANO,ACTIVO,DESCRIPCION,ORDEN,OBSERVACIONES,NOTA1,NOTA2,PLAZO,VACIO FROM AMBIENT_IMG WHERE ACTIVO = '1' AND CATEGORIA = '$cat' ORDER BY ORDEN ASC

Muchas gracias!!

Última edición por gnzsoloyo; 03/01/2013 a las 13:41 Razón: Código SQL sin etiqeutar. Usar Highlight "SQL"
  #5 (permalink)  
Antiguo 03/01/2013, 13:07
 
Fecha de Ingreso: diciembre-2012
Mensajes: 83
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Duda con subconsulta

exacto! o asi tambien sin join:

Código SQL:
Ver original
  1. SELECT a.*, b.NOMBRE_SUCURSAL FROM AMBIENT_IMG a, AMBIENTES_SUC b WHERE a.ID_SUCURSAL = b.ID_SUCURSAL;

Última edición por gnzsoloyo; 03/01/2013 a las 13:41 Razón: Código SQL sin etiqeutar. Usar Highlight "SQL"
  #6 (permalink)  
Antiguo 03/01/2013, 13:14
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: Duda con subconsulta

Cita:
Iniciado por chuekeron Ver Mensaje
Finalmente lo logre mediante esta consulta:

SELECT ID,ID_SUCURSAL,NOMBRE_SUCURSAL = (SELECT NOMBRE_SUCURSAL FROM AMBIENTES_SUC WHERE ID_SUCURSAL = AMBIENT_IMG.ID_SUCURSAL),CATEGORIA,NOMBRE,IMG_UP,I MG_OVER,IMG_DETALLE,IMG_DETALLE_BIG,IMG_DETALLE_PL ANO,ACTIVO,DESCRIPCION,ORDEN,OBSERVACIONES,NOTA1,N OTA2,PLAZO,VACIO FROM AMBIENT_IMG WHERE ACTIVO = '1' AND CATEGORIA = '$cat' ORDER BY ORDEN ASC

Muchas gracias!!
Porque la subconsulta cuando puedes sacarla con un simple join??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 03/01/2013, 14:17
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Duda con subconsulta

Cita:
Iniciado por Libras Ver Mensaje
y esto no funciona:

Código SQL:
Ver original
  1. SELECT * FROM  AMBIENT_IMG AS E
  2. INNER JOIN  AMBIENTES_SUC AS O WHERE O.ID_SUCURSAL = E.ID_SUCURSAL

saludos!
:: Libras, probe tu consulta y veo que no funciona:

[Microsoft][SQL Server Native Client 10.0][SQL Server]Sintaxis incorrecta cerca de la palabra clave 'WHERE'

Cita:
Iniciado por leo_acn Ver Mensaje
exacto! o asi tambien sin join:

Código SQL:
Ver original
  1. SELECT a.*, b.NOMBRE_SUCURSAL FROM AMBIENT_IMG a, AMBIENTES_SUC b WHERE a.ID_SUCURSAL = b.ID_SUCURSAL;
:: leo_acn, esa consulta también funciono, y pareciera utilizar menos recursos que la que utilice yo.
  #8 (permalink)  
Antiguo 03/01/2013, 14:19
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: Duda con subconsulta

Cita:
Iniciado por chuekeron Ver Mensaje
:: Libras, probe tu consulta y veo que no funciona:

[Microsoft][SQL Server Native Client 10.0][SQL Server]Sintaxis incorrecta cerca de la palabra clave 'WHERE'



:: leo_acn, esa consulta también funciono, y pareciera utilizar menos recursos que la que utilice yo.
Error de sintaxis :P

SELECT * FROM AMBIENT_IMG AS E
INNER JOIN AMBIENTES_SUC AS O on (O.ID_SUCURSAL = E.ID_SUCURSAL)

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 03/01/2013, 14:25
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Duda con subconsulta

Cita:
Iniciado por Libras Ver Mensaje
Error de sintaxis :P

SELECT * FROM AMBIENT_IMG AS E
INNER JOIN AMBIENTES_SUC AS O on (O.ID_SUCURSAL = E.ID_SUCURSAL)

saludos!
:: Libras, acabo de probarla y me pasa lo que me sucedió hoy con una de las consultas que probe en ejecutar. Trae todos los campos de la tabla AMBIENTES_SUC, cuando lo unico que necesito traer es el campo NOMBRE_SUCURSAL, que esta asociado por el ID_SUCURSAL entre ambas tablas.
  #10 (permalink)  
Antiguo 03/01/2013, 15:14
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: Duda con subconsulta

este.......sip claro porque es un select *(selecciona todo), si necesitas solo traer el nombre de la sucursal sin todos los campos nada mas haces


SELECT o.nombre FROM AMBIENT_IMG AS E
INNER JOIN AMBIENTES_SUC AS O on (O.ID_SUCURSAL = E.ID_SUCURSAL)


y listo tienes nada mas el nombre de la sucursal :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 03/01/2013, 17:26
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Duda con subconsulta

Libras: Tienes un empeño envidiable, saludos compañero y feliz año nuevo.
__________________
MCTS Isaias Islas
  #12 (permalink)  
Antiguo 03/01/2013, 17:32
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: Duda con subconsulta

Cita:
Iniciado por iislas Ver Mensaje
Libras: Tienes un empeño envidiable, saludos compañero y feliz año nuevo.
Feliz Año compañero, y del empeño jejeje algo hay de eso :P
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #13 (permalink)  
Antiguo 04/01/2013, 06:49
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Duda con subconsulta

Cita:
Iniciado por Libras Ver Mensaje
este.......sip claro porque es un select *(selecciona todo), si necesitas solo traer el nombre de la sucursal sin todos los campos nada mas haces


SELECT o.nombre FROM AMBIENT_IMG AS E
INNER JOIN AMBIENTES_SUC AS O on (O.ID_SUCURSAL = E.ID_SUCURSAL)


y listo tienes nada mas el nombre de la sucursal :)
Libras, al realizar la consulta de esa manera no me traía los datos de la primera tabla. Solo agregue "E.*" y funciono.
Saludos y gracias, finalmente la consulta también podría ser:

SELECT E.*, O.NOMBRE_SUCURSAL FROM AMBIENT_IMG AS E INNER JOIN AMBIENTES_SUC AS O on (O.ID_SUCURSAL = E.ID_SUCURSAL)
  #14 (permalink)  
Antiguo 04/01/2013, 09:11
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: Duda con subconsulta

este............cuando pongo en una consulta select * from tabla y tu necesitas solo ciertos campos de la tabla, espero que tu pongas los que necesitas, si el query con el * regresa todos los campos que necesitas(mas algunos extras) supongo que resuelve tu problema, ya queda de ti que lo adécues a tus necesidades.....

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #15 (permalink)  
Antiguo 04/01/2013, 12:05
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Duda con subconsulta

Tal como dije, el problema no era que seleccionaba todos los campos... no seleccionaba ninguno en la tabla AMBIENT_IMG.
La intención fue que en el post quede la consulta SQL que me propusiste tal cual me termino funcionando (de hecho ya lo había resuelto pero quería explorar mas posibilidades... y no es que pretenda que nadie me adecue nada).

En fin, tema cerrado para mi y otra vez... gracias por tu aporte. Saludos!

Etiquetas: sql
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 12:55.