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

[SOLUCIONADO] Duda con una subconsulta en SQL

Estas en el tema de Duda con una subconsulta en SQL en el foro de SQL Server en Foros del Web. Hola que tal, bueno tengo una duda con respecto a una subconsulta que tengo que hacer, la consulta es la siguiente: Tengo una tabla donde ...
  #1 (permalink)  
Antiguo 15/10/2015, 16:56
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Duda con una subconsulta en SQL

Hola que tal, bueno tengo una duda con respecto a una subconsulta que tengo que hacer, la consulta es la siguiente:

Tengo una tabla donde tengo el número estado y el número del municipio y otra tabla donde tengo sus nombres.

Ejemplo:

Tabla Estados =>

Código SQL:
Ver original
  1. # del Estado   # del Municipio
  2.     1                   4
  3.     1                   5
  4.     2                   6
  5.     2                   8
  6.     2                   9
  7.     3                   7

Tabla de los nombres =>

Código SQL:
Ver original
  1. # estado             Nombre de estado y/o municipio
  2.     1                           MEXICO
  3.     2                           GUADALAJARA
  4.     3                           SINALOA
  5.     4                           COMPOSTELA
  6.     5                           TECAMAC
  7.     6                           TEQUILA
  8.     7                           CATEMACO
  9.     8                           ARENITAS
  10.     9                           ALGO


Lo que ocupo hacer es que por medio de una consulta obtener el nombre del estado y el nombre de su municipio, siguiendo con el ejemplo el resultado que espero es que se muestre de la siguiente manera:

Resultado esperado =>

Código SQL:
Ver original
  1. # del Estado                  # del Municipio
  2.     MEXICO                       COMPOSTELA
  3.     MEXICO                          TECAMAC
  4.     GUADALAJARA                 TEQUILA
  5.     GUADALAJARA                 ARENITAS
  6.     GUADALAJARA                 ALGO
  7.     SINALOA                        CATEMACO

El query que llevo hecho es de la siguiente manera:

Código SQL:
Ver original
  1. SELECT DISTINCT a.Estado, b.Nombre, a.Municipio/*,
  2.   ( SELECT b.Nombre
  3.     FROM TablaEstado  AS a (NOLOCK)
  4.     JOIN NombreEstados AS b (NOLOCK) ON ( a.Municipio= b.Municipio) ) */
  5. FROM TablaEstado AS a (NOLOCK)
  6. JOIN NombreEstados AS b (NOLOCK) ON ( a.Estado = b.Estado)
  7. ORDER BY a.Estado

Pero solo obtengo el # del estado, su nombre y el municipio bien, pero no puedo obtener el nombre del municipio. La parte que tengo comentada si la activo me marca error porque retorna mas de un valor.

Se agradece cualquier sugerencia.
__________________
Your Code as a Crime Scene...

Última edición por drako_darpan; 15/10/2015 a las 17:05
  #2 (permalink)  
Antiguo 16/10/2015, 09:57
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 una subconsulta en SQL

Código SQL:
Ver original
  1. CREATE TABLE #ESTADOS (ESTADOID INT, MUNICIPIOID INT)
  2.  
  3. INSERT INTO #ESTADOS VALUES (1,4) MEXICO - COMPOSTELA
  4. INSERT INTO #ESTADOS VALUES (1,5) MEXICO - TECAMAC
  5. INSERT INTO #ESTADOS VALUES (2,6) GUADALAJARA - TEQUILA
  6. INSERT INTO #ESTADOS VALUES (2,8) GUADALAJARA - ARENITAS
  7. INSERT INTO #ESTADOS VALUES (2,9) GUADALAJARA - ALGO
  8. INSERT INTO #ESTADOS VALUES (3,7) SINALOA - CATEMACO
  9.  
  10. CREATE TABLE #NOMBRES (ESTADOID INT, NOMBRE VARCHAR(50))
  11.  
  12. INSERT INTO #NOMBRES VALUES(1, 'MEXICO')
  13. INSERT INTO #NOMBRES VALUES(2, 'GUADALAJARA')
  14. INSERT INTO #NOMBRES VALUES(3, 'SINALOA')
  15. INSERT INTO #NOMBRES VALUES(4, 'COMPOSTELA')
  16. INSERT INTO #NOMBRES VALUES(5, 'TECAMAC')
  17. INSERT INTO #NOMBRES VALUES(6, 'TEQUILA')
  18. INSERT INTO #NOMBRES VALUES(7, 'CATEMACO')
  19. INSERT INTO #NOMBRES VALUES(8, 'ARENITAS')
  20. INSERT INTO #NOMBRES VALUES(9, 'GUANAJUATO')
  21.  
  22. SELECT B.NOMBRE, C.NOMBRE
  23. FROM #ESTADOS A INNER JOIN #NOMBRES B
  24. ON A.ESTADOID = B.ESTADOID
  25. INNER JOIN #NOMBRES C ON A.MUNICIPIOID = C.ESTADOID

Resultado:

NOMBRE NOMBRE
MEXICO COMPOSTELA
MEXICO TECAMAC
GUADALAJARA TEQUILA
GUADALAJARA ARENITAS
GUADALAJARA ALGO
SINALOA CATEMACO


PD: Si eres de México, como supongo, te conviene bajar la base de SEPOMEX y utilizar esta
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 19/10/2015, 15:47
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: Duda con una subconsulta en SQL

Gracias por responder iislas, era lo que ocupaba.
__________________
Your Code as a Crime Scene...
  #4 (permalink)  
Antiguo 20/10/2015, 12:00
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 una subconsulta en SQL

Si vives en Mexico, te recomiendo que bajes la base de datos de SEPOMEX, esta muy completa.
__________________
MCTS Isaias Islas

Etiquetas: join, query, select, sql, subconsulta, 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:09.