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

composicion externa mysql

Estas en el tema de composicion externa mysql en el foro de Mysql en Foros del Web. Hola a todos. Quisiera saber si alguien me puede ayudar con una consulta. Aclaro que no tengo muy en claro el tema de left join, ...
  #1 (permalink)  
Antiguo 04/07/2007, 22:10
 
Fecha de Ingreso: abril-2004
Ubicación: Cdoro. Rivadavia
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
composicion externa mysql

Hola a todos. Quisiera saber si alguien me puede ayudar con una consulta. Aclaro que no tengo muy en claro el tema de left join, right outer join......
En fin mi problema es que me estan faltando algunos datos en el resultado de la consulta. Tengo lo siguiente:
- Tabla EMPRESAS, CODPOSTAL
- Empresas tiene dos campos, CPREAL, CPLEGAL con los cuales emparejo con la tabla CODPOSTAL
- Cree una vista v_empresas para que me los datos de la empresa y localidad y provincia.
- La vista es asi
CREATE OR REPLACE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v_empresas` AS select -datosvariosdeempresa- ` from (`empresas` left join `codpostal` on(((`empresas`.`cp` = `codpostal`.`cp`) and (`empresas`.`cpreal` = `codpostal`.`cp`))))

pero me muestra null en los campos localidad y provincia que son datos de la tabla codpostal.

Por favor, aunque sea una ayudita agradeceré muchisimo. Saludos
  #2 (permalink)  
Antiguo 17/07/2007, 20:00
axz
 
Fecha de Ingreso: mayo-2005
Mensajes: 360
Antigüedad: 19 años
Puntos: 10
Re: composicion externa mysql

Guau .... pues por principio de cuentas creo que tienes varios paréntesis que marean un poco y me da la impresión de que tienes una ligera inconsistencia ... pues estas relacionando el campo codpostal.cp con 2 campos; empresas.cp y empresas.cpreal ... supongo que esa es la razón por la que tu vista está arrojando nulls.

Si estoy entendiendo bien tu planteamiento ... tu solución sería algo como esto (solo la parte del query, el resto es integrarlo en la construcción de la vista):
Código:
SELECT -datosvariosdeempresa-
FROM empresas e
LEFT JOIN codpostal c
ON e.cp = c.cp
AND e.cpreal = c.NOMBRE_DEL_CAMPO_PARA_CPREAL 
creo que con eso debe de funcionar, si no funciona dime y lo arreglamos
... suerte
  #3 (permalink)  
Antiguo 18/07/2007, 05:32
 
Fecha de Ingreso: abril-2004
Ubicación: Cdoro. Rivadavia
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
Re: composicion externa mysql

Hola. Gracias por tu respuesta. A ver si te entendí, sería algo así?

SELECT -datosvariosdeempresa-
FROM empresas e
LEFT JOIN codpostal c
ON e.cp = c.cp
AND e.cpreal = c.cp

Los dos campos (e.cp y e.cpreal) estan relacionados con c.cp que es la que tiene (codigopostal, localidad, provincia)

Saludos !!
  #4 (permalink)  
Antiguo 18/07/2007, 09:15
axz
 
Fecha de Ingreso: mayo-2005
Mensajes: 360
Antigüedad: 19 años
Puntos: 10
Re: composicion externa mysql

Ah, bien, pero entonces ... solo preguntar ¿vale la pena relacionar ambos? o es posible que en tu e.cp y e.cpreal tengas datos distintos? ... esto es por performance ... porque si tienen siempre datos los 2 campos y en ambos tienes siempre lo mismo valdría la pena eliminar uno tanto de la tabla como del join, con lo que te quedaría
Código:
SELECT -datosvariosdeempresa-
FROM empresas e
LEFT JOIN codpostal c
ON e.cp = c.cp
de otra forma si crees que no sobran, es correcto lo que dices ...
Suerte con eso
  #5 (permalink)  
Antiguo 18/07/2007, 14:50
 
Fecha de Ingreso: abril-2004
Ubicación: Cdoro. Rivadavia
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
Re: composicion externa mysql

Hola nuevamente. El tema es que son dos datos distintos. Uno es el CodPostal de la dirección real y el otro es el CodPostal de la dirección legal. Posiblemente en algun momento coincidan, pero muchas veces van a ser distintos CodPostal. Se Entiende? Por ejemplo el domicilio legal es Buenos Aires y el domicilio real es Cordoba. Como me quedaría la consulta? Nuevamente, muchas gracias por tus respuestas.
  #6 (permalink)  
Antiguo 18/07/2007, 15:07
axz
 
Fecha de Ingreso: mayo-2005
Mensajes: 360
Antigüedad: 19 años
Puntos: 10
Re: composicion externa mysql

Bien, siendo así ningún campo sobra. La pregunta ahora es ... en algún momento muestras datos de la tabla codpostal? ... si no los muestras y estas usando LEFT JOIN ... dicho join no te sirve ...

En este caso los nulls que te está mostrando es porque en los campos codpostal y/o cp hay algún valor que no existe en codpostal.cp ... si quieres evitar los nulls tienes que usar INNER JOIN ... y entonces te quedaría así ...
Código:
SELECT -datosvariosdeempresa-
FROM empresas e
INNER JOIN codpostal c
ON e.cp = c.cp
Pero OJO ... acá solo estoy mostrando los datos que coinciden con empresas.cp

Ojalá te haya aclarado las cosas
  #7 (permalink)  
Antiguo 27/07/2007, 23:42
 
Fecha de Ingreso: abril-2004
Ubicación: Cdoro. Rivadavia
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
Re: composicion externa mysql

Hola de nuevo. Ya me estoy abusando de tu paciencia con tantas preguntas. La cuestión es que necesito mostrar en un formulario también los valores nulos.
Mis tablas.......
Empresas: codigo, nombre, direccionlegal, cplegal, direccionReal, cpReal, masdatosdeempresa....
CodPostal: codigo, localidad, provincia

Saludos!!! y muchas gracias
  #8 (permalink)  
Antiguo 30/07/2007, 10:34
axz
 
Fecha de Ingreso: mayo-2005
Mensajes: 360
Antigüedad: 19 años
Puntos: 10
Re: composicion externa mysql

mmarti, no te preocupes, para eso estamos!

Para mostrar también los valores nulos entonces tendrías que usar LEFT JOIN.

Código:
SELECT e.cp, c.cp, e.cpreal, -datosvariosdeempresa-
FROM empresas e
LEFT JOIN codpostal c
ON e.cp = c.cp
AND e.cpreal = c.cp
En este caso, la consulta te mostraría todos los registros que tengan el mismo valor en empresas.cp y empresas.cpreal, ahora ojo con los campos que muestras, pues si muestras los de empresas es posible que se te muestren null, en cambio si muestras los de codpostal no se mostrarán en null, por eso mostré en un principio los 3 campos ...

Suerte y saludos
  #9 (permalink)  
Antiguo 02/08/2007, 05:25
 
Fecha de Ingreso: abril-2004
Ubicación: Cdoro. Rivadavia
Mensajes: 83
Antigüedad: 20 años
Puntos: 0
Re: composicion externa mysql

Muchísimas gracias por tu ayuda. Probé con lo último que me mandaste y funcionó bárbaro. Muchas gracias Master.
  #10 (permalink)  
Antiguo 02/08/2007, 17:24
axz
 
Fecha de Ingreso: mayo-2005
Mensajes: 360
Antigüedad: 19 años
Puntos: 10
Re: composicion externa mysql

Excelente, qué bueno que te sirvió ... aunque me falta muchísimo para ser master, pero gracias ...

Muchos saludos y suerte por allá
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 09:01.