MySQL - problema al crear vistas

 
Vista:

problema al crear vistas

Publicado por Mariana (4 intervenciones) el 28/08/2013 18:30:34
Tengo el siguiente problema, estoy creando una vista de unas tablas bastante grandes,
una tabla tiene 90.000 registros, otra 90.000, otra 120.000 y otra 31.000
Necesito generar un informe donde se cruza información de las 4 tablas, para lo cual estoy haciendo una vista, pero....
1. intente generarla por codigo php, y me bloquea la base de datos, no se pueden ejecutar otras tareas mientras crea la tabla y se demora bastante.
2. Estoy intentandolo hacer por phpmyadmin, crea la vista, pero me la llena unicamente con 30 registros repitiendo siempre el mismo registro
Les dejo el codigo
CREATE VIEW `VISTA_MTTOS` AS select `SOLICITUD`.`item`,`SOLICITUD`.`codigosol`,`SOLICITUD`.`fechasol`,`SOLICITUD`.`hora`,`SOLICITUD`.`estado` ,`SOLICITUD`.`cancelado_por` ,`SOLICITUD`.`entidad` ,`SOLICITUD`.`oficina` ,`SOLICITUD`.`ciudad` ,`SOLICITUD`.`codent` ,`SOLICITUD`.`codofc` ,`SOLICITUD`.`prioridad` ,`SOLICITUD`.`tipofalla`,`SOLICITUD`.`descri` ,`SOLICITUD`.`preventivo` ,`SOLICITUD`.`tipo_servicio`,`SOLICITUD`.`codigocli` ,`SOLICITUD`.`iniciosap` ,`SOLICITUD`.`finsap` ,`SOLICITUD`.`equipo` ,`SOLICITUD`.`placa` ,`SOLICITUD`.`usuario` ,`SOLICITUD`.`solicito` ,`SOLICITUD`.`coordina` ,`SOLICITUD`.`facturado`,`SOLICITUD`.`tratado` ,`SOLICITUD`.`usuarioT` ,`SOLICITUD`.`liberar` ,`SOLICITUD`.`usuarioL` ,`DESCARGA`.`cedula` ,`DESCARGA`.`cedula2` ,`DESCARGA`.`fecha` ,`DESCARGA`.`odm` ,`DESCARGA`.`ode` ,`DESCARGA`.`ingreso` ,`DESCARGA`.`salida` ,`DESCARGA`.`remision` ,`DESCARGA`.`observacion`,`DESCARGA`.`funcionario` ,`DESCARGA`.`obserpro`,`DESCARGA`.`cedulapro` ,`DESCARGA`.`cedulapro2` ,`DESCARGA`.`fechapro` ,`DESCARGA`.`tipo` ,`DESCARGA`.`fecha_descarga`,`DESCARGA`.`hora_descarga` ,`DESCARGA`.`fecha_pro` ,`DESCARGA`.`usuario` AS `usuarioD`,`COMENTARIOS_MTTOS`.`orden` ,`COMENTARIOS_MTTOS`.`acta` ,`COMENTARIOS_MTTOS`.`remision` AS `remisionC`,`COMENTARIOS_MTTOS`.`fecha_eje` ,`COMENTARIOS_MTTOS`.`cedula` AS `cedulaC`,`COMENTARIOS_MTTOS`.`comentario` ,`COMENTARIOS_MTTOS`.`fecha` AS `fechaC`,`COMENTARIOS_MTTOS`.`fechaf`,`COMENTARIOS_MTTOS`.`stop` ,`COMENTARIOS_MTTOS`.`nombre`,`COTIZACIONES`.`codigo` ,`COTIZACIONES`.`fecha` AS `fechaCO`,`COTIZACIONES`.`mtto` from `SOLICITUD`,`DESCARGA`, `COMENTARIOS_MTTOS`, `COTIZACIONES` where `SOLICITUD`.`fechasol`>='2011-01-01'
Gracias por su valiosa ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

problema al crear vistas

Publicado por xve (1151 intervenciones) el 28/08/2013 19:29:36
Hola Mariana, el problema que tienes, creo que es que no estas vinculando los datos... tienes que vincular la tablas que utilizas, ya que sino, esta utilizado infinidad de registros.

No se muy bien como estan vinculadas las tablas, pero tendrias que utilizar join, algo así:

select * from Tabla1 t1 LEFT JOIN Tabla2 t2 ON t1.campo=t1.campo

coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema al crear vistas

Publicado por Mariana (4 intervenciones) el 28/08/2013 20:37:29
Te comento,
probe tambien con
from (((`SOLICITUD` join `DESCARGA`) join `COMENTARIOS_MTTOS`) join `COTIZACIONES`);
y pasa lo mismo, solo carga un rgistro que repite 30 veces y ya.
La idea es que me cargue la totalidad de registros de las tabas mencionadas

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

problema al crear vistas

Publicado por xve (1151 intervenciones) el 28/08/2013 21:41:22
Esto que me comentas, es erróneo... un JOIN siempre tiene que tener un ON!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema al crear vistas

Publicado por Pedro (54 intervenciones) el 28/08/2013 22:45:25
Sino usa la forma tradicional

select T1.Campo1, T2,campox
from T1, T2
where T1.<campo relacion> = T2.<campo relacion>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema al crear vistas

Publicado por Mariana (4 intervenciones) el 28/08/2013 22:48:25
Gracias.... mejoro bastante.
Ya me saco varios registros pero no todos
Lo puse así:
from `SOLICITUD` INNER JOIN `DESCARGA` ON `SOLICITUD`.`item`= `DESCARGA`.`item` INNER JOIN `COMENTARIOS_MTTOS` ON `SOLICITUD`.`item`= `COMENTARIOS_MTTOS`.`item`
INNER JOIN `COTIZACIONES` ON `SOLICITUD`.`item`= `COTIZACIONES`.`mtto`

Pero necesito que me tome todos los registros de SOLICITUDES, asi no tenga registros en las otras tablas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

problema al crear vistas

Publicado por xve (1151 intervenciones) el 29/08/2013 12:06:56
Hola Mariana, esto te devuelve los que coinciden con tu consulta... si no te devuelve mas, sera porque no hay mas registros que coincidas con las vinculaciones, no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema al crear vistas

Publicado por Pedro (54 intervenciones) el 30/08/2013 00:58:34
Y con OUTER no te anda?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema al crear vistas

Publicado por Mariana (4 intervenciones) el 30/08/2013 14:26:46
Muchas gracias por tu ayuda.
Todo parece indicar que con este si funciono:

from `SOLICITUD` INNER JOIN `DESCARGA` ON `SOLICITUD`.`item`= `DESCARGA`.`item` LEFT JOIN `COMENTARIOS_MTTOS` ON `SOLICITUD`.`item`= `COMENTARIOS_MTTOS`.`item`
LEFT JOIN `COTIZACIONES` ON `SOLICITUD`.`item`= `COTIZACIONES`.`mtto`
WHERE `SOLICITUD`.`fechasol`>='2008-01-01' AND `SOLICITUD`.`fechasol`<='2010-12-31'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar