Uso mysql.
Tengo dos tablas: usuarios y usuarios_masdatos:
Usuarios
----------------------
identificador
nick
password
fecha_registro
email
usuarios_masdatos
------------------------
id_usuario
aficciones
biografía
pais
web
...
En usuarios van a estar cubiertos todos los campos, los campos de usuarios_masdatos puede que no estén cubiertos...
Si junto todo en la misma tabla con tantos campos opcionales (solo puse 4 pero hay muchos más) me quedan muchos vacíos, por eso dividí la tabla usuarios en dos.
Pero ahora tengo un problema: quiero mostrar todos los datos de los usuarios en un listado, para ello hago esto:
select usuarios.identificador,usuarios.nick,usuarios.pass word,usuarios.fecha_registro,usuarios.email
usuarios_masdatos.aficciones,usuarios_masdatos.bio grafia [...] from usuarios,usuarios_masdatos where usuarios.identificador = usuarios_masdatos.id_usuario
Pero esa consulta solo me muestra aquellos usuarios que tienen un registro correspondiente en usuarios_masdatos, de manera que no me muestra todos los usuarios.
Para mostrarlos todos envío dos consultas, primero selecciono todos los campos de usuarios y luego selecciono todos los campos de usuarios_masdatos para el usuario anterior (si no existe en esta tabla pues no muestro nada)
El problema que se presenta es la optimización, ya que en este ejemplo solo son dos consultas pero aveces necesito seleccionar datos de hasta cuatro tablas... es ahí cuando es necesario resumir esto en el mínimo número posible de consultas...
Puedo hacer los que pretendo con una consulta? No sé, una anidada o algo así...
Saludos.