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

No consigo resolver CONSULTA SQL con INNER JOIN

Estas en el tema de No consigo resolver CONSULTA SQL con INNER JOIN en el foro de SQL Server en Foros del Web. Hola foro; Estoy bastante espero estos días ya que no puedo resolver una consulta que relaciona 1 tabla con 4 más. Menos mal que sigo ...
  #1 (permalink)  
Antiguo 24/11/2008, 03:58
 
Fecha de Ingreso: mayo-2004
Mensajes: 5
Antigüedad: 20 años
Puntos: 0
Pregunta No consigo resolver CONSULTA SQL con INNER JOIN

Hola foro;

Estoy bastante espero estos días ya que no puedo resolver una consulta que relaciona 1 tabla con 4 más. Menos mal que sigo avanzando por otro lugar, si no... estaría parado.

Tengo estas tablas:

TD_CLIENTES
__________________
ID_CLIENTE (pk)
RAZON
DIRECCION
COD_PAIS (FK a la tabla TD_COD_PAIS)
COD_COMUNIDAD (FK a la tabla TD_COD_COMUNIDAD)
COD_PROVINCIA (FK a la tabla TD_COD_PROVINCIA)
COD_LOCALIDAD (FK a la tabla TD_COD_LOCALIDAD)

Teniedo SOLO un cliente en la tabla clientes con estos datos:
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - 17 - 1 - 2


TD_COD_PAIS
__________________
ID_COD (PK)
DESCRIPCION

Teniedo SOLO un país en la tabla con estos datos:
1 - ESPAÑA


TD_COD_COMUNIDAD
__________________
ID_COD (PK) FK a la tabla TD_COD_PAIS
ID_COD2 (PK)
DESCRIPCION

En esta tabla están todas las comunidades de España, la ID=17 es Comunidad Valenciana


TD_COD_PROVINCIA
__________________
ID_COD (PK) FK a la tabla TD_COD_PAIS
ID_COD2 (PK) FK a la tabla TD_COD_COMUNIDAD
ID_COD3 (PK)
DESCRIPCION

En esta tabla están todas las provincias de España, la Provincia 1 de la Comunidad 17 del País 1 es ALICANTE

TD_COD_LOCALIDAD
__________________
ID_COD (PK) FK a la tabla TD_COD_PAIS
ID_COD2 (PK) FK a la tabla TD_COD_COMUNIDAD
ID_COD3 (PK) FK a la tabla TD_COD_PROVINCIA
ID_COD4 (PK)
DESCRIPCION

En esta tabla están algunas localidades. La Localidad 2 de la Provincia 1 de la Comunidad 17 del País 1 es ELCHE


El caso es que quiero que me devuelva a TODOS los clientes, con la descripción del País, Comunidad, Provincia y Localidad.

Lo hago así:

Código:
SELECT DISTINCT(ID_CLIENTE), RAZON, DIRECCION, 
			TD_CLIENTES.COD_PAIS, TD_COD_PAIS.DESCRIPCION,
			TD_CLIENTES.COD_COMUNIDAD, TD_COD_COMUNIDAD.DESCRIPCION,
			TD_CLIENTES.COD_PROVINCIA, TD_COD_PROVINCIA.DESCRIPCION,
			TD_CLIENTES.COD_LOCALIDAD, TD_COD_LOCALIDAD.DESCRIPCION
	FROM TD_CLIENTES INNER JOIN TD_COD_PAIS ON
			TD_CLIENTES.COD_PAIS = TD_COD_PAIS.ID_COD
		INNER JOIN TD_COD_COMUNIDAD ON
			TD_CLIENTES.COD_COMUNIDAD = TD_COD_COMUNIDAD.ID_COD2 
		INNER JOIN TD_COD_PROVINCIA ON
			TD_CLIENTES.COD_PROVINCIA = TD_COD_PROVINCIA.ID_COD3
		INNER JOIN TD_COD_LOCALIDAD ON
			TD_CLIENTES.COD_LOCALIDAD = TD_COD_LOCALIDAD.ID_COD4
	ORDER BY RAZON

Pero me trae 19 resultados, 1 por cada una de las Comunidades que hay (17 + Ceuta y Melilla)

2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - Álava - 2 - Elche
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - Albacete - 2 - Elche
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - Alicante - 2 - Elche
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - Almería - 2 - Elche
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - Ávila - 2 - Elche
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - Badajoz - 2 - Elche
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - Barcelona - 2 - Elche
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - Cantabria - 2 - Elche
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - Ceuta - 2 - Elche
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - Com. Foral Navarra - 2 - Elche
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - Huesca - 2 - Elche
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - Islas Baleares - 2 - Elche
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - La Coruña - 2 - Elche
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - La Rioja - 2 - Elche
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - Las Palmas - 2 - Elche
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - Madrid - 2 - Elche
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - Melilla - 2 - Elche
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - Murcia - 2 - Elche
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - Principado Asturias - 2 - Elche


Está claro que solo quiero que me de el resultado:
2 - CLIENTE DE PRUEBA - DIRECCIÓN - 1 - ESPAÑA - 17 - Comunidad Valenciana - 1 - Alicante - 2 - Elche

Pero no lo consigo... y no se donde tengo el error ya que he probado otras CONSULTAS cambiando algunas claves... pero nada.


Espero vuestra ayuda.



Muchas gracias!
  #2 (permalink)  
Antiguo 24/11/2008, 04:59
 
Fecha de Ingreso: mayo-2004
Mensajes: 5
Antigüedad: 20 años
Puntos: 0
Respuesta: No consigo resolver CONSULTA SQL con INNER JOIN

Ya se se ha resuleto.

Aquí está la solución:

Código:
SELECT DISTINCT(ID_CLIENTE), RAZON, DIRECCION, 
		TD_CLIENTES.COD_PAIS, TD_COD_PAIS.DESCRIPCION, 
		TD_CLIENTES.COD_COMUNIDAD, TD_COD_COMUNIDAD.DESCRIPCION, 
		TD_CLIENTES.COD_PROVINCIA, TD_COD_PROVINCIA.DESCRIPCION, 
		TD_CLIENTES.COD_LOCALIDAD, TD_COD_LOCALIDAD.DESCRIPCION 
	FROM TD_CLIENTES 
		INNER JOIN TD_COD_PAIS ON 
			TD_CLIENTES.COD_PAIS = TD_COD_PAIS.ID_COD 
		INNER JOIN TD_COD_COMUNIDAD ON 
			TD_CLIENTES.COD_PAIS = TD_COD_COMUNIDAD.ID_COD AND 
			TD_CLIENTES.COD_COMUNIDAD = TD_COD_COMUNIDAD.ID_COD2 
		INNER JOIN TD_COD_PROVINCIA ON 
			TD_CLIENTES.COD_PAIS = TD_COD_PROVINCIA.ID_COD AND 
			TD_CLIENTES.COD_COMUNIDAD = TD_COD_PROVINCIA.ID_COD2 AND 
			TD_CLIENTES.COD_PROVINCIA = TD_COD_PROVINCIA.ID_COD3 
		INNER JOIN TD_COD_LOCALIDAD ON 
			TD_CLIENTES.COD_PAIS = TD_COD_LOCALIDAD.ID_COD AND 
			TD_CLIENTES.COD_COMUNIDAD = TD_COD_LOCALIDAD.ID_COD2 AND 
			TD_CLIENTES.COD_PROVINCIA = TD_COD_LOCALIDAD.ID_COD3 AND 
			TD_CLIENTES.COD_LOCALIDAD = TD_COD_LOCALIDAD.ID_COD4 
	ORDER BY RAZON
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 10:10.