Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > Mysql

Respuesta
 
Herramientas Desplegado
Antiguo 04-jul-2007, 22:10   #1 (permalink)
mmarti está en el buen camino
 
Fecha de Ingreso: abril-2004
Ubicación: Cdoro. Rivadavia
Mensajes: 83
Enviar un mensaje por ICQ a mmarti
Alegría 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
mmarti está desconectado   Responder Citando
Antiguo 17-jul-2007, 20:00   #2 (permalink)
axz
axz tiene algunos puntos positivos de karma
 
Fecha de Ingreso: mayo-2005
Mensajes: 299
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
axz está desconectado   Responder Citando
Antiguo 18-jul-2007, 05:32   #3 (permalink)
mmarti está en el buen camino
 
Fecha de Ingreso: abril-2004
Ubicación: Cdoro. Rivadavia
Mensajes: 83
Enviar un mensaje por ICQ a mmarti
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 !!
mmarti está desconectado   Responder Citando
Antiguo 18-jul-2007, 09:15   #4 (permalink)
axz
axz tiene algunos puntos positivos de karma
 
Fecha de Ingreso: mayo-2005
Mensajes: 299
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
axz está desconectado   Responder Citando
Antiguo 18-jul-2007, 14:50   #5 (permalink)
mmarti está en el buen camino
 
Fecha de Ingreso: abril-2004
Ubicación: Cdoro. Rivadavia
Mensajes: 83
Enviar un mensaje por ICQ a mmarti
Alegría 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.
mmarti está desconectado   Responder Citando
Antiguo 18-jul-2007, 15:07   #6 (permalink)
axz
axz tiene algunos puntos positivos de karma
 
Fecha de Ingreso: mayo-2005
Mensajes: 299
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
axz está desconectado   Responder Citando
Antiguo 27-jul-2007, 23:42   #7 (permalink)
mmarti está en el buen camino
 
Fecha de Ingreso: abril-2004
Ubicación: Cdoro. Rivadavia
Mensajes: 83
Enviar un mensaje por ICQ a mmarti
Parpadear 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
mmarti está desconectado   Responder Citando
Antiguo 30-jul-2007, 10:34   #8 (permalink)
axz
axz tiene algunos puntos positivos de karma
 
Fecha de Ingreso: mayo-2005
Mensajes: 299
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
axz está desconectado   Responder Citando
Antiguo 02-ago-2007, 05:25   #9 (permalink)
mmarti está en el buen camino
 
Fecha de Ingreso: abril-2004
Ubicación: Cdoro. Rivadavia
Mensajes: 83
Enviar un mensaje por ICQ a mmarti
Re: composicion externa mysql

Muchísimas gracias por tu ayuda. Probé con lo último que me mandaste y funcionó bárbaro. Muchas gracias Master.
mmarti está desconectado   Responder Citando
Antiguo 02-ago-2007, 17:24   #10 (permalink)
axz
axz tiene algunos puntos positivos de karma
 
Fecha de Ingreso: mayo-2005
Mensajes: 299
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á
axz está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 12:53.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93