No consigo resolver consulta sql con inner join
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)
Descripción
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.
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)
Descripción
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.
3 respuestas
Respuesta
1
Respuesta de panzaverde
1
Respuesta de vlachodba
1