Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

'Delete where and or' no funcion

Estas en el tema de 'Delete where and or' no funcion en el foro de Mysql en Foros del Web. Buenos dias! estoy haciendo una consulta a mi base de datos para elimintar un dato que debe cumplir con ciertas condiciones! 1) @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 12/07/2011, 06:59
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 9 meses
Puntos: 4
'Delete where and or' no funcion

Buenos dias! estoy haciendo una consulta a mi base de datos para elimintar un dato que debe cumplir con ciertas condiciones!

1)
Código HTML:
Ver original
  1. id
debe ser igual a
Código PHP:
$idRow
AND

2)
Código HTML:
Ver original
  1. idUserWhoMake
debe ser igual a
Código PHP:
$idUserVisiting 
OR

3)
Código HTML:
Ver original
  1. idUserWhoReceive
debe ser igual a
Código PHP:
$idUservisiting 

La consulta es esta:

Código PHP:
$sSQL_Delete "DELETE FROM $tableProfile WHERE idUserWhoMake=$idUserVisiting OR idUserWhoReceive=$idUserVisiting AND id=$idRow"
el problema es que borra todas las ocurrencias de idUserWhoReceive/idUserWhoMake! no me esta tomando el "
Código PHP:
AND Id=$idRow 
"

alguna idea de que puede ser?

Muchas Gracias
  #2 (permalink)  
Antiguo 12/07/2011, 07:13
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: 'Delete where and or' no funcion

No hay errores sintacticos en la consulta.

El problema lo tienes en php.
Ya pido el traslado del tema al foro indicado.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 12/07/2011, 07:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: 'Delete where and or' no funcion

No es un error sintáctico, es un error de lógica:
Si tu WHERE tiene dos condicionales, pero cualquiera que sea la válida, debe ser al mismo tiempo que el ID sea el indicado, entonces ambas condiciones se deben considerar como una sola:
Código MySQL:
Ver original
  1. DELETE FROM $tableProfile
  2.     (idUserWhoMake=$idUserVisiting OR idUserWhoReceive=$idUserVisiting)
  3.     AND
  4.     id=$idRow
de lo contrario, basta con que el primero de los parámetros sea TRUE para que los otros dos no sean considerados.
Como puedes ver, se trata del orden como se evalúan las condiciones. Este tipo de cosas pasa en todos los lenguajes, por eso se enseña en las clases de programación que los paréntesis en las condiciones permiten definir la forma de evaluarlas...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 12/07/2011, 07:24
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 9 meses
Puntos: 4
Respuesta: 'Delete where and or' no funcion

bueno, yo pense en esa posibilidad pero, pense que, poniendo

Código PHP:
Ver original
  1. id=$idRow and idUserWhoMake=$idUserVisiting OR idUserWhoReceive=$idUserVisiting

seria lo mismo! ya que id=$idRow lo encuentra, y despues si encuentra idUserWhoMake ya terminaria la consulta, sino, pasa a evaluar el idUserWhoReceive, si lo encuentra ejecuta la consulta, si no, no lo hace. Lo que me daba como resultado lo mismo!

Ahora lo pruebo, pero seguro debe ser por eso!

Muchas gracias por los comentarios!
En un ratito vuelvo y les aviso =)
  #5 (permalink)  
Antiguo 12/07/2011, 07:38
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 9 meses
Puntos: 4
Respuesta: 'Delete where and or' no funcion

Funciona! genial! muchas gracias!
  #6 (permalink)  
Antiguo 12/07/2011, 08:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: 'Delete where and or' no funcion

No te funcionaba igual porque el AND sólo establece la relación entre los dos parámetros entre lso que está. No tiene caracter transitivo, por lo que no afecta al tercer término de la proposición.
Si vas a un manual de lógica proposicional podrás ver que para que una condición tenga caracter transitivo con un conjunto de proposiciones, ese conjunto dbee estar entre paréntesis.
El funcionamiento del WHERE, como el del IF sigue los principios de lógica proposicional, pero se entiende mejor con las tablas de verdad.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: clausulas, delete, php
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 09:57.