Foros del Web » Programando para Internet » PHP »

Phpmyadmin

Estas en el tema de Phpmyadmin en el foro de PHP en Foros del Web. Le cuento, tengo varias tablas, Empresas, Lineas, Destino y Hora del Destino. Donde una empresa puede tener varias lineas una linea puede tener varios destinos ...
  #1 (permalink)  
Antiguo 28/02/2012, 05:45
 
Fecha de Ingreso: febrero-2012
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
Phpmyadmin

Le cuento, tengo varias tablas, Empresas, Lineas, Destino y Hora del Destino.

Donde una empresa puede tener varias lineas una linea puede tener varios destinos y un destino a su vez puede tener varias lineas y los destinos pueden tener varias horas.

Un ejemplo.

Navalmoral de la Mata puede pertenecer a la Linea "MAdrid - Badajoz" y puede pertenecer a la linea "Madrid - Cáceres"

No se como seria la estructura exacta para hacerlo en PHPmyadmin y luego pasarlo por dreamweaver. Me da error a la hora de hacer el juego de registros ya que todo esto tendría que ir filtrado por la iddestino

Muchísimas gracias
  #2 (permalink)  
Antiguo 28/02/2012, 05:52
Avatar de francisco93  
Fecha de Ingreso: julio-2011
Ubicación: Soy ciudadano del mundo, pero vivo en Canarias :)
Mensajes: 58
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: Phpmyadmin

Hola, a ver yo tengo una web que es de musica y las tablas estan configuradas para un genero musical puede tener varios artistas, un artista varios albumes y un album varias canciones o sea un poco mas complejo de lo que quieres hacer pero si no pones exactamente que quieres hacer no puedo ayudarte. yo lo que hice fue relacionar las tablas en phpmyadmin si esto lo que querias saber dime y te explico sin problema o si es otra cosa igual tratare de ayudarte. Saludos.
  #3 (permalink)  
Antiguo 28/02/2012, 05:55
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Phpmyadmin

hacerlo en PHPmyadmin y luego pasarlo por dreamweaver??
Esto mejor consultalo en un foro Dreamweaver, el código que genera MM es bastante malo y difícil de mantener. Respecto de la estructura de tablas, por ejemplo:

Empresa
id nombre direccion etc

lineas
id nombre

destino
id nombre

servicio
id_empresa id_linea id_destino hora_salida hora_llegada etc

Mientras que las tres primeras guardan las entidades, la última guarda la relación, de manera que una empresa puede tener n lineas, cada una con su correspondiente destino. Respecto de las horas de salida y llegada pueden agregarse en la tabla servicios, o bien, hacer una nueva tabla para la relación linea / destino. En cualquier caso tienes que entender las entidades, empresa, linea, destino y SERVICIO que tú no has mencionado pero que es indispensable. El destino no tiene nada que ver con el servicio en sí, por tanto, atributos como hora de llegada, precio, hora de salida, etc, no pertenecen al destino sino a el viaje, servicio o como quieras llamarle. Claro que se puede entrar en mucho más detalle. Es importante un correcto análisis antes de empezar a trabajar. Te recomiendo http://ingenegros.com.ar/Sistemas/di...-piattini.html es un buen comienzo. Saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #4 (permalink)  
Antiguo 28/02/2012, 09:34
 
Fecha de Ingreso: febrero-2012
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Phpmyadmin

Luego las relacciones digamos que las tengo que hacer hacia la tabla servicios no? y en servicio las id deben ser claves foraneas no?
  #5 (permalink)  
Antiguo 28/02/2012, 11:24
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Phpmyadmin

Exacto, la tabla servicios de compone de campos numéricos donde cada uno hace referencia a claves foráneas. Estas relaciones han de estar restringidas, de manera que no puede existir un registro en servicios que no tenga su correspondiente parte en las demás tablas. Adicionalmente, el update / delete de una tabla maestra provoca indefectiblemente la misma acción la tabla servicios. Saludos,
__________________
Fere libenter homines, id quod volunt, credunt.
  #6 (permalink)  
Antiguo 28/02/2012, 11:30
 
Fecha de Ingreso: febrero-2012
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Phpmyadmin

Muchisimas gracias.
Ahora lo que me ocurre es que al crear la consulta en Dreamweaver me devuelve los valores id no los nombres
Estoy haciendo la consulta
SELECT *
FROM servicio, lineas, empresas, destino
WHERE iddestino = colname AND servicio.idempresa = empresas.Idempresa AND servicio.Idlinea = lineas.Idlinea AND servicio.iddestino = destino.Iddestino

pero me dice que es ambiguo la columna iddestino porque esa es la variable de busqueda.

Muchisimas gracias de nuevo
  #7 (permalink)  
Antiguo 28/02/2012, 11:40
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Phpmyadmin

Utiliza alias de tabla SIEMPRE, por ejemplo (adaptalo al codigo real):

Código MySQL:
Ver original
  1. FROM servicio S, lineas L, empresas E, destino D
  2. WHERE S.id_linea = L.id AND D.id = S.id_destino

No estoy seguro pero creo que esta sintaxis esta desaconsejada, lo lógico sería:

Código MySQL:
Ver original
  1. FROM servicio S
  2. LEFT JOIN LINEAS L ON (S.id_linea = L.id)
  3. LEFT JOIN DESTINOS D ON (S.id_destino = D.id)

etc... no lo sé, compruéba el manual.

Saludos,

sel
__________________
Fere libenter homines, id quod volunt, credunt.
  #8 (permalink)  
Antiguo 28/02/2012, 12:13
 
Fecha de Ingreso: febrero-2012
Mensajes: 5
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Phpmyadmin

Muchas gracias de nuevo
Ahora si me lo coje pero si le meto la variable de busqueda iddestino me da el error 1064

Lo tengo asi:
SELECT *
FROM servicio
WHERE iddestino = colname (VARIABLE DE BUSQUEDA A TRAVES DE FORMULARIO)
FROM servicio LEFT JOIN lineas ON (servicio.idlinea = lineas.idlinea)

y el error es este

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM servicio LEFT JOIN lineas ON (servicio.idlinea = lineas.idlinea) LIMIT 0,' at line 1
  #9 (permalink)  
Antiguo 29/02/2012, 01:52
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Phpmyadmin

Código MySQL:
Ver original
  1.   S.*,
  2.   L.*
  3. FROM servicio S
  4.   LEFT JOIN lineas S
  5.     ON (S.idlinea = L.idlinea)
  6.     WHERE S.iddestino = 'xxxxxxx';
__________________
Fere libenter homines, id quod volunt, credunt.

Etiquetas: phpmyadmin, registro, 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 21:47.