Hola,
Tengo un problema al recuperar los "posts" que tengo en la base de datos. Me explico:
Los campos de la tabla "posts" son: id, autor, contenido, [...].
Los campos de la tabla "usuarios" son: id, nombre, [...].
Donde, si posts.autor es un número, posts.autor = usuarios.id; si no es un número, es el nombre de un usuario no registrado.
Código SQL:
Ver originalSELECT posts.id, usuarios.nombre AS autor, FROM posts, usuarios WHERE posts.autor = usuarios.id ORDER BY fecha_pub
El problema al añadir la posibilidad de que no registrados escriban posts, el campo autor puede tener directamente el nombre del autor no registrado, pero como sigue buscando el usuario cuyo id es un string, no lo va a encontrar.
Resultado: no muestra los posts de usuarios no registrados.
Sabe alguien cómo debe ser la consulta para recuperar bien estos campos?
- posts.id
- si posts.autor regexp '^[0-9]+$' (es un número) entonces usuarios.nombre as autor; si no, posts.autor
- [...]
- si autor regexp '^[0-9]+$' entonces WHERE posts.autor = usuarios.id; si no, no existe esta condición
Resumen: si posts.autor es un número, ir a buscar su nombre en la tabla usuarios; si no, posts.autor ya es el nombre.
Muchas gracias