Ver Mensaje Individual
  #6 (permalink)  
Antiguo 31/10/2012, 07:08
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 17 años
Puntos: 574
Respuesta: Consulta anidada en MySQL

El problema viene de que la PK de la tabla ciudades no es ciuCodigo si no que se debe usar en combinación con ciuDepto

Ciudades

PK ciuDepto+ciuCodigo


| 01 | CALDAS |
| 01 | 002 | MANIZALES |
| 01 | 002 | 1 | PRINCIPAL |
| 01 | 031 | VILLAMARIA |
| 01 | 031 | 2 | PALERMO |
| 01 | 031 | 3 | PARQUE |
| 02 | BOGOTA |
| 02 | 002 | BOGOTA D.C. |
| 02 | 002 | 4 | PRINCIPAL |
| 02 | 002 | 5 | SUR |
| 02 | 002 | 6 | NORTE |
| 03 | ANTIOQUIA |
| 03 | 001 | VIENA |
| 03 | 001 | 7 | PLAZA MAYOR |
| 03 | 002 | MEDELLIN |
| 03 | 002 | 8 | PRINCIPAL |


Tenemos la ciudad 002 en diversos departamentos.


Código MySQL:
Ver original
  1. SELECT d.depNombre as DEPARTAMENTO,
  2.              c.ciuNombre as CIUDAD,
  3.              s.sedNombre as SEDE
  4. FROM (DEPARTAMENTOS d INNER JOIN CIUDADES c ON d.depCodigo=c.ciuDepto)
  5.                 INNER JOIN SEDES s ON c.ciuCodigo=s.sedCiudad
  6.                            and c.ciuDepto=s.sedDepto

Luego si es necesario "sedDepto" en la tabla sedes.

Ahora?

Agregar un campo autoinc a la tabla ciudades, idCiudad, nos daria una PK simple que luego se deberia usar en la tabla sedes, y eliminar los dos campos actuales sedCiudad y sedDepto. Esto simplificaria las cosas y reduciria el espacio utilizado en disco guardando la misma información.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 31/10/2012 a las 07:24