Foros del Web » Programando para Internet » PHP »

Interesante: ¿Eliminar registro en record set?

Estas en el tema de Interesante: ¿Eliminar registro en record set? en el foro de PHP en Foros del Web. Hola a todos! Mi pregunta es si se puede eliminar un registro (fila) de un recordser devuelto al realizar una query. Por ejemplo, y siempre ...
  #1 (permalink)  
Antiguo 28/01/2005, 11:57
 
Fecha de Ingreso: agosto-2003
Ubicación: Málaga, España
Mensajes: 407
Antigüedad: 14 años, 4 meses
Puntos: 1
Interesante: ¿Eliminar registro en record set?

Hola a todos!

Mi pregunta es si se puede eliminar un registro (fila) de un recordser devuelto al realizar una query. Por ejemplo, y siempre suponiendo que trabajamos en PHP + MySQL.

1. Realizamos la query = "SELECT * FROM TABLA"
2. Si queremos eliminar algunos de los registros devueltos de la query:

while ($Registro = mysql_fetch_array($query)) {
ELIMINAR: ¿Cómo se elimina el registro del recordset devuelto en $query?
}

Muchas gracias y un saludo !
Miguel.
  #2 (permalink)  
Antiguo 28/01/2005, 12:32
Avatar de gpardo  
Fecha de Ingreso: octubre-2004
Ubicación: Centenario, NQN
Mensajes: 40
Antigüedad: 13 años, 1 mes
Puntos: 0
Hola,

me parece que debieras eliminar el registro directamente desde el query:

$query = "SELECT * FROM tabla WHERE condicion";

así ya estarás trabajando sólo con los registros que te interesan

  #3 (permalink)  
Antiguo 28/01/2005, 12:41
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Tienes que hacer una consulta DELETE.

Saludso.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 28/01/2005, 12:48
 
Fecha de Ingreso: agosto-2003
Ubicación: Málaga, España
Mensajes: 407
Antigüedad: 14 años, 4 meses
Puntos: 1
Hola y gracias por vuestra atención.... pero... no, no quiero hacer un delete, porque no me sirve para el proceso que tengo que hacer, que se basa en ir descartando algunos registros en cada pasada que haga el proceso sobre el susodicho recordset, de tal forma que en cada pasada sea 'más chico' y ahorre tiempo de proceso...
  #5 (permalink)  
Antiguo 28/01/2005, 12:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Se trata de que ejecutes ordenes SQL del tipo:

DELETE FROM tabla WHERE campo=condicion

donde "condicion y campo" podría ser

$sql="DELETE FROM tabla WHERE id='".$Registro['id']."'";
mysql_query($sql);

También tienes en SQL (de Mysql) la instrucción:

IN (lista de valores)


Un saludo,
  #6 (permalink)  
Antiguo 28/01/2005, 13:05
Avatar de gpardo  
Fecha de Ingreso: octubre-2004
Ubicación: Centenario, NQN
Mensajes: 40
Antigüedad: 13 años, 1 mes
Puntos: 0
perdón, pero creo entender que lo que el amigo quiere es eliminar las filas del recordset, NO de la tabla.

si usa DELETE, borraría directamente las filas de la tabla y perdería los registros... me parece que era la idea.

si mal no entiendo, la manera de hacer esto es filtrando los registros que no quiere obtener con la cláusula where, que puede tener más de una condición, incluso en otras tablas (si es que están relacionadas), p.ej:

SELECT * FROM tabla
LEFT JOIN tabla2 ON tabla.fld1 = tabla2.fld1
[ más left joins si son necesarios ]
WHERE tabla.fld1 >= "xxxxxx"
AND tabla2.fld5 < "zzzzzz"
[ más wheres si son necesarios ]

de este modo puede relacionar más de una tabla y filtrar por campos de las tablas relacionadas también

  #7 (permalink)  
Antiguo 28/01/2005, 13:25
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. será mejor que se explique .. por qué si nos hablan de "borrar" solemos entender "DELETE" .. si nos hablan de "obtener" X datos bajo cierta condición .. ahí claro .. de una "tabla cruda" tal cual se obtienen sólo los necesarios .... (pero bajo cierta condición).

En definitiva explicar y concretar que quiere decir con:
2. Si queremos eliminar algunos de los registros devueltos de la query:

además de explicar el objetivo final o lo que se pretende hacer en el fondo ..

Un saludo,
  #8 (permalink)  
Antiguo 28/01/2005, 13:27
 
Fecha de Ingreso: agosto-2003
Ubicación: Málaga, España
Mensajes: 407
Antigüedad: 14 años, 4 meses
Puntos: 1
GPardo, estás en lo cierto, pero tampoco quiero obtener el conjunto de registros con una única onsulta inicial. Intentaré ilustrarlo con un ejemplo:

1. Suponemos que tenemos una baraja de cartas, esto representa un subconjunto inicial de una tabla de la BBDD obtenido con un SELECT. De esta forma la baraja representa el recordset a manejar-editar.

2. Por otra parte tenemos una serie de criterios que deben ir seleccionando cartas del conjunto inicial obtenido antes(punto 1)

3. El proceso se basa en que dado el conjunto inicial de cartas, hay que ir buscando algunas cartas según unos criterios variables, pero lo IMPORTANTE es que me interesa que cada vez que encuentre una carta que cumple el criterio establecido (en esa vez) debo 'quitarla', para que cuando vaya a buscar más cartas, el conjunto que tenga que recorrer sea más pequeño.

¿Habré aclarado o enturbiado la cuestión?
  #9 (permalink)  
Antiguo 28/01/2005, 13:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. eso normalmente se hace aplicando tus filtros a tu consulta SQL según los que puedas haber seleccionado antes en otra iteracción de tu script/proceso/aplicación ..

No se suele trabajar con una "tabla temporal" .. pero podrías hacerlo .. Ya sea volcando tu consulta a un array y trabar dicho array (con unset() para eliminar elementos y demás) o creando incluso tablas Mysql temporales (de tipo heap en memoria) ...

Un saludo,
  #10 (permalink)  
Antiguo 28/01/2005, 14:17
 
Fecha de Ingreso: agosto-2003
Ubicación: Málaga, España
Mensajes: 407
Antigüedad: 14 años, 4 meses
Puntos: 1
OK, Gracias!.

Lo de las 'tablas temporales' en memoria no tengo conocimiento de como funciona (miraré el manual MySQL) pero creo que es lo que más se asemeja a lo que necesito.

Si de todas formas conocen algún artículo que hable un poco sobre el tema, pues mucho mejor.

Un saludo!
  #11 (permalink)  
Antiguo 28/01/2005, 14:24
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
De todas formas, creo que en este caso es mejor cargar toda la consulta en un array, e ir modificando el array, como dice cluster.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:16.