
17/09/2012, 08:44
|
 | Moderador criollo | | Fecha de Ingreso: noviembre-2007 Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 4 meses Puntos: 2658 | |
Respuesta: Select para 3 tablas. Vuelve a leer lo que te digo en el penúltimo post mío. Creo que no lo estás entendiendo bien.
El ejemplo que te doy de los LEFT JOIN implica que las tablas que tienes están incompletas. Las relaciones que faltan se tienen que poner para evitar el producto cartesiano. Sin esas relaciones, la unicidad de los registros devueltos por la consulta se pierde, y tienes datos basura en cantidades industriales.
La lógica que se te está escapando es que:
- Un usuario debe tener una o más direcciones.
- La misma dirección puede corresponder a diferentes usuarios (no es identificatoria)
- Un usuario puede publicar uno o más avisos, pero cada aviso sólo puede corresponder a una única dirección y un único usuario.
- Cada aviso debe corresponder a un único aparato, pero cada aparato puede aparecer en diferentes avisos.
El hecho de que la FK del usuario pueda ser puesta en cada tabla, por cuestiones de optimizacion de consultas, no implica que en la consulta los JOIN apunten todos a la misma tabla, precisamente por la posibilidad que te expliqué de generar el producto cartesiano.
¿Se entiende la lógica del asunto?
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |