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

Relaciones múltiples entre DOS TABLAS

Estas en el tema de Relaciones múltiples entre DOS TABLAS en el foro de Bases de Datos General en Foros del Web. Relaciones múltiples entre DOS TABLAS Tengo una tabla que es una lista de elementos de diferentes tipos, en el ejemplo he extractado solo algunos elementos ...
  #1 (permalink)  
Antiguo 24/07/2004, 23:06
 
Fecha de Ingreso: julio-2004
Mensajes: 29
Antigüedad: 19 años, 9 meses
Puntos: 0
Relaciones múltiples entre DOS TABLAS

Relaciones múltiples entre DOS TABLAS

Tengo una tabla que es una lista de elementos de diferentes tipos, en el ejemplo
he extractado solo algunos elementos de los tipos 9 (Poblaciones) y 10 (Provincias)
(En realidad existen 42 tipos diferentes de elementos)

Lista_ID-----Lista_Tipo_ID------Lista_Nombre Tabla LISTA
.338..............9..............Roquetas
.339..............9..............Aguadulce
.341..............9..............Armilla
.342..............9..............Albolote
.512.............10..............Almería
.528.............10..............Granada


La identificación de cada elemento se realiza a través de otra tabla de la que
también he preparado un extracto, aunque, para el caso que nos ocupa, creo
que no se necesita

---Tipo_ID---Tipo_Nombre Tabla TIPO

.......8......Jefes de Obra
.......9......Poblaciones
......10......Provincias
......11......Apertura


Prácticamente en todas las tablas de datos de la aplicación se hacen referencias
múltiples a la tabla de elementos. La que sigue es un buen ejemplo

Local_ID---Local_Nombre---Local_Poblacion_ID---Local_Provincia_ID Tabla LOCAL

.....1....Comercial Pérez.........339................512
.....2....Carnes Gómez............341................528
.....3....Tienda Joven 1..........338................512
.....4....Tienda Joven 2..........339................512
.....5....Tienda Joven 3..........341................528
.....6....Tienda Joven 4..........342................528


Necesito crear un SELECT de MySQL en el que pueda recoger los registros de
esta última tabla y clasificarlos pos dos conceptos, por Provincias y por
Poblaciones. (Naturalmente, por sus nombres, no por sus identificadores)

Clasificar por uno solo de los conceptos es muy fácil y lo consigo con este SELECT

comando = comando & " SELECT * FROM LOCAL "
comando = comando & " INNER JOIN LISTA "
comando = comando & " ON Local_Provincia_ID = Lista_ID "
comando = comando & " ORDER BY Lista_Nombre"

Con este SELECT, mi listado quedaría así

Local_ID-Local_Nombre---Local_Poblacion_ID---Lista_Nombre
...1....Comercial Pérez.........339.............Almería
...3....Tienda Joven 1..........338.............Almería
...4....Tienda Joven 2..........339.............Almería
...2....Carnes Gómez............341.............Granada
...5....Tienda Joven 3..........341.............Granada
...6....Tienda Joven 4..........342.............Granada


También sería fácil, si cada tipo de elemento fuese una tabla independiente, pero no está
en nuestra mano, ya que la Aplicación tiene muchas páginas funcionando con el formato
actual, y cambiarlas todas podría ser muy costoso. (y serían 42 tablas diferentes)

Visto esto:
¿¿Como podría conseguir, además, clasificar por los nombres de las
Poblaciones?? y, también, ¿¿como podría reflejarlos en el listado??

Última edición por mmdmay; 25/07/2004 a las 09:20
  #2 (permalink)  
Antiguo 25/07/2004, 11:20
 
Fecha de Ingreso: julio-2004
Mensajes: 29
Antigüedad: 19 años, 9 meses
Puntos: 0
He estado trabajando un poco en el tema y era mas fácil de lo que pensaba.

La solución estaba en tratar la tabla con las listas de elementos DOS veces,
o las que sean necesarias, renombrándolas y utilizando una diferente para
cada relación.

Aquí dejo la composición del SELECT por si alguien pudiese tener el mismo problema.



comando = comando & " SELECT "
comando = comando & " Local_Nombre, "
comando = comando & " Local_Provincia_ID, "
comando = comando & " Local_Poblacion_ID, "
comando = comando & " uno.Lista_ID, "
comando = comando & " uno.Lista_Nombre AS nombre1, "
comando = comando & " dos.Lista_ID, "
comando = comando & " dos.Lista_Nombre AS nombre2 "
comando = comando & " FROM LISTA AS uno, LISTA AS dos, LOCAL "
comando = comando & " WHERE Local_Provincia_ID = uno.Lista_ID "
comando = comando & " AND Local_Poblacion_ID = dos.Lista_ID "
comando = comando & " ORDER BY uno.Lista_Nombre, dos.Lista_Nombre"
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 07:06.