Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/03/2013, 18:57
Onedy
 
Fecha de Ingreso: julio-2011
Mensajes: 62
Antigüedad: 12 años, 9 meses
Puntos: 2
Consultas condicionadas

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 original
  1. SELECT 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