745.942 temas | 5.025.573 mensajes | seremos forros, pero somos una bocha
Me Gusta1Me Gusta
  • 1 Mensaje de subterranean homesick

Viejo ZoN[e] dijo: 28.05.14
Buenas noches, tengo que recurrir otra ves a la inteligencia masiva, otra vez a los foros. Ojala puedan ayudarme!!

Tengo una tambla, que es asi:

NOMBRE TABLA: mensajes_privados

Campos:
id_incremental
mensaje
id_autor_uno
id_autor_dos

Yo necesito listar todos los mensajes, que tengan diferentes autores, es decir, que tengan diferentes "id_autor_uno". En caso que halla mas de un mensaje que tengan el mismo valor en "id_autor_uno", que solo se muestre el primero que se encontro.

Pero lo complicado esta recien por venir, si el valor del campo "id_autor_uno" es igual a "error", se debe tener en cuenta el campo "id_autor_dos" para evitar la repeticion del mensaje.

Por ejmplo, estan estos mensajes:

id_incremental = 1
mensaje = 'Mensaje 1'
id_autor_uno = 'Juan'
id_autor_dos = '123456'

id_incremental = 2
mensaje = 'Mensaje 2'
id_autor_uno = 'Pedro'
id_autor_dos = '23452'

id_incremental = 3
mensaje = 'Mensaje 3'
id_autor_uno = 'Pedro'
id_autor_dos = '45785'

id_incremental = 4
mensaje = 'Mensaje 4'
id_autor_uno = 'error'
id_autor_dos = '39480'

id_incremental = 5
mensaje = 'Mensaje 5'
id_autor_uno = 'error'
id_autor_dos = '123456'


Con estos mensajes mostraria el 1, 2 y 4.
El 3 no se muestra porque tiene como autor a 'Pedro'.
El 5 no se muestra porque tiene como autor a 'error' y el autor_dos es el mismo autor_dos que el mensaje 1 (que ya se mostro antes).
Aclaro que el mensaje 4 se muestra porque aunque tiene 'error', el autor_dos es distinto a todos.

Ojala se halla entendido, se que es un lio y no se como resolverlo.
Gracias!!!

2 Comentarios | Registrate y participá

Viejo arielj dijo: 28.05.14
Yo haría dos queries, necesitás que sea si o si una sola?

Primero agarraría lo fácil, todos los mensajes privados que puedas obtener de la tabla usando id_autor_uno sin repetir el id_autor_uno

Después extraería todos esos id_autor_dos para saber cuáles no repetir

Y después buscaría todos los que tengan id_autor_uno = 'error' e id_autor_dos NOT IN(ids)

Calculo que con eso ya está, no se me ocurre nada para hacerlo en una sola query, capaz algún join, pero no sé si vas a ganar mucho.
Viejo subterranean homesick dijo: 28.05.14
dejate de joder y ponete un kiosko
A PINOS le gusta esto.

Herramientas
Iniciar Sesion

Recordarme

Top de Usuarios