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

problema con consulta mysql

Estas en el tema de problema con consulta mysql en el foro de Mysql en Foros del Web. Hola! Quiero hacer lo siguiente: Código: "SELECT * FROM tabla WHERE (compradopor='%s' OR usuario='%s') AND ((vendedorcalificado = 'N' AND compradopor != '') OR (compradorcalificado = ...
  #1 (permalink)  
Antiguo 26/03/2010, 10:21
 
Fecha de Ingreso: enero-2010
Mensajes: 42
Antigüedad: 14 años, 3 meses
Puntos: 1
problema con consulta mysql

Hola! Quiero hacer lo siguiente:
Código:
"SELECT * FROM tabla WHERE (compradopor='%s' OR usuario='%s') AND ((vendedorcalificado = 'N' AND compradopor != '') OR (compradorcalificado = 'N' AND compradopor != ''))  ORDER BY copradofecha DESC, compradohora DESC "
El problema esta en que no puedo poner '%s' dos veces en la misma consulta. Es decir, si saco uno de los dos campos que quiero con '%s', funciona perfectamente.
Alguna solucion?
Gracias!
  #2 (permalink)  
Antiguo 26/03/2010, 10:47
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: problema con consulta mysql

Cambia el = por like.

Estas utilizando el % como comodin?

o hace parte de la cadena de texto?

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 26/03/2010, 10:49
 
Fecha de Ingreso: enero-2010
Mensajes: 42
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: problema con consulta mysql

es parte de una cadena de texto. Probe con el like, pero tampoco pude... Alguna otra idea?
Gracias por contestar!
  #4 (permalink)  
Antiguo 26/03/2010, 12:16
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: problema con consulta mysql

Eso no debería pasar...
acabo de hacer un ejemplo y no causa ningún problema.

danos la estructura de tu tabla (El create table) y algunos registros para probar.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 26/03/2010, 12:35
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, 4 meses
Puntos: 2658
Respuesta: problema con consulta mysql

En este contexto:
Código MySQL:
Ver original
  1. FROM tabla
  2.   (compradopor='%s' OR usuario='%s')
  3.   AND
  4.   (
  5.     (vendedorcalificado = 'N' AND compradopor != '')
  6.     OR
  7.     (compradorcalificado = 'N' AND compradopor != '')
  8.   )
  9. ORDER BY copradofecha DESC, compradohora DESC;
El caracter "%" está actuando como caracter y no como comodín. Esto significa que estás buscando "%" dentro del string... Y como tal, para que sirva en la comparación, uno de los dos campos debe contener "%s".
¿Es eso lo que buscas?
Veamos:
Código MySQL:
Ver original
  1. mysql> SET @usuario='%s';
  2. Query OK, 0 rows affected (0.00 sec)

Código MySQL:
Ver original
  1. mysql> SELECT @usuario;
  2. +----------+
  3. | @usuario |
  4. +----------+
  5. | %s       |
  6. +----------+
  7. 1 row in set (0.00 sec)
Código MySQL:
Ver original
  1. mysql> SELECT @usuario='%s';
  2. +---------------+
  3. | @usuario='%s' |
  4. +---------------+
  5. |             1 |
  6. +---------------+
  7. 1 row in set (0.00 sec)
Código MySQL:
Ver original
  1. mysql> SELECT @usuario='%';
  2. +--------------+
  3. | @usuario='%' |
  4. +--------------+
  5. |            0 |
  6. +--------------+
  7. 1 row in set (0.00 sec)
  8. mysql> SELECT @usuario='s';
  9. +--------------+
  10. | @usuario='s' |
  11. +--------------+
  12. |            0 |
  13. +--------------+
  14. 1 row in set (0.00 sec)

¿Se percibe la idea? ¿Eso es lo que estás tratando de obtener, o qué otra cosa?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 26/03/2010, 14:34
 
Fecha de Ingreso: enero-2010
Mensajes: 42
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: problema con consulta mysql

Lo que hago con el '%s' es capturar la variable de sesion, que en mi caso es MM_Username.
Por eso, cuando saco uno de ellos en la consulta, funciona perfectamente. Es decir, funciona cuando lo dejo asi:
Código:
"SELECT * FROM tabla WHERE compradopor='%s'  AND ((vendedorcalificado = 'N' AND compradopor != '') OR (compradorcalificado = 'N' AND compradopor != ''))  ORDER BY copradofecha DESC, compradohora DESC "
Gracias por los comentarios, gente.
GNZSOLOYO, no entiendo lo que me queres decir.

Lo que quiero es que seleccione * cuando el campo "compradopor" O el campo "USUARIO" sean igual al nombre de usuario que esta conectado (Por eso la variable de sesion), Y cuando se cumplan el resto de las condiciones. Pero la que esta fallando es esa que les nombre.
  #7 (permalink)  
Antiguo 26/03/2010, 18:12
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, 4 meses
Puntos: 2658
Respuesta: problema con consulta mysql

Pues a mi entender lo que tienes es un conflicto de sintaxis entre PHP y MySQL, porque estás usando cosas que se interpretan desde MySQL como funciones propias.
¿No estarás definiendo mal la variable usada?
¿Las variables en PHP no usan "$" en lugar de "%"?
__________________
¿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: Ninguno
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 04:29.