Como puedo selecionar el valor menor y mayor de un campo sql

Iniciado por SrTrp, 28 Diciembre 2017, 05:28 AM

0 Miembros y 1 Visitante están viendo este tema.

SrTrp

no se si estoy haciendo lo correcto ya que quiero especificar varios datos
asi es como intento hacerlo escojiendo el mayor de id_msj
Código (php) [Seleccionar]

$delete2 = "SELECT id_msj FROM messajes  WHERE id_usersend='$idder' AND id_userrecibe='$idreci' ORDER BY id_msj ASC limit 0,1";

y el menor sería así?
Código (php) [Seleccionar]

$delete2 = "SELECT id_msj FROM messajes  WHERE id_usersend='$idder' AND id_userrecibe='$idreci' ORDER BY id_msj DESC limit 0,1";

no se si estoy haciendo bien al poner el ORDER despues de los WHERE

aguro90

Si lo que quieres es borrar en un sistema de comentarios, cuando muestras el mensaje añadele un botón de borrado con el value= al id de su comentario y lo mandas a un borrar.php que borre ese id. Espero que te ayude!

SrTrp

Lo que quiero es que me elimine el primer mensaje escribido automaticamente al escribir otro

MeTaD

#3
Cita de: SrTrp en 28 Diciembre 2017, 22:03 PM
Lo que quiero es que me elimine el primer mensaje escribido escrito automaticamente al escribir otro

Te recomiendo mantener un solo idioma en el código, ya sea inglés o español. id_usersend y id_userrecibe no esta para nada bien, te recomendaría usar CamelCase pero eso ya es gusto personal. Yo usaria de nombres en las tablas lo siguiente:


 
 
 
id_msj-->ID
id_usersend-->SenderID
id_userrecibe--ReceiverID

Esto para que sea mas mantenible tu código a futuro.


Respecto a lo que deseas hacer, si es literalmente obtener los datos con la información que tienes, lo estás haciendo bien

Para obtener el ID del mensaje menor:
Código (sql) [Seleccionar]
SELECT id_msj FROM messajes  WHERE id_usersend='$idder' AND id_userrecibe='$idreci' ORDER BY id_msj ASC limit 1;

Para obtener el ID del mensaje mayor:
Código (sql) [Seleccionar]
SELECT id_msj FROM messajes  WHERE id_usersend='$idder' AND id_userrecibe='$idreci' ORDER BY id_msj DESC limit 1;


Ahora, si lo que deseas es simplemente eliminar esos mensajes no veo necesidad de ejecutar dos queries cuando una puede hacerlo, actualmente obtienes el ID y supongo que despues haces un
Código (sql) [Seleccionar]
DELETE FROM messajes WHERE id_msj = $delete2


Pero todo lo podias hacer desde la primer query que hiciste:

Para borrar el ID del mensaje menor:
Código (sql) [Seleccionar]
DELETE FROM messajes  WHERE id_usersend='$idder' AND id_userrecibe='$idreci' ORDER BY id_msj ASC limit 1;

Para borrar el ID del mensaje mayor:
Código (sql) [Seleccionar]
DELETE FROM messajes  WHERE id_usersend='$idder' AND id_userrecibe='$idreci' ORDER BY id_msj DESC limit 1;



Sin embargo, eso de los ID's no me convence completamente. Te recomiendo registrar la fecha y hora al momento del mensajey usar eso mejor... Pero ya es mas preferencia y organización que otra cosa.