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

if en mysql????

Estas en el tema de if en mysql???? en el foro de Mysql en Foros del Web. Hola amiguetes! tengo una tabla MYSQL con campos "moneda" "dinero" entre otros, me gustaria saber si es posible efectuar una sentencia SQL como esta: $sql ...
  #1 (permalink)  
Antiguo 29/08/2012, 03:41
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Exclamación if en mysql????

Hola amiguetes!

tengo una tabla MYSQL

con campos "moneda" "dinero" entre otros, me gustaria saber si es posible efectuar una sentencia SQL como esta:


$sql = "SELECT * FROM usuarios WHERE nombre='$nombre' IF campo-moneda='euro' dinero=$dinero, else dinero=$dinero*0,6 ";

bueno algo asi ... gracias!
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #2 (permalink)  
Antiguo 29/08/2012, 04:15
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: if en mysql????

No en el WHERE, allí los condicionales se usan con clausulas AND, OR y XOR:
Código MySQL:
Ver original
  1. FROM usuarios
  2. WHERE nombre='$nombre' AND( (campo_moneda='euro' AND dinero=$dinero) OR dinero=$dinero*0.6));

Notas:
- Los decimales se escriben con punto, no con coma.
- Los signos +, -, #, $, &, % y otros semejantes no se pueden usar como parte de los nombres de campos o tablas. Si se necesita usarlos, los nombres deben escribirse obligatoriamente entre acentos inversos (´).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 29/08/2012, 05:00
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: if en mysql????

ah si? ok ahora mismo lo pruebo thank man!y ya cuento como va la cosa!

Estaba haciendo algo asi que funciona pero no esta terminado...

Código PHP:
Ver original
  1. $sql = "SELECT money,
  2. if(money='USD','yeah','fuck') as name
  3. FROM anuncios WHERE id='327'";
  4. $consulta = mysql_query($sql) or die ("No se pudo ejecutar la consulta");
  5. While ($registro=mysql_fetch_array($consulta))
  6. {
  7. echo $registro["name"];
  8. echo "<br/>";
  9. echo $registro["money"];
  10. }

voy a probar con lo que me has facilitado!!!!
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #4 (permalink)  
Antiguo 29/08/2012, 05:13
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: if en mysql????

Me casca la sql me da error ... :(

Código PHP:
Ver original
  1. $dinero="100";
  2.  
  3. $sql1 = "SELECT * FROM anuncios WHERE id='327' AND( (money='EUR' AND budget > '$dinero') OR budget = '$dinero*0.6'));";
  4. $consulta1 = mysql_query($sql1) or die ("No se pudo ejecutar la consulta");
  5. While ($registro1=mysql_fetch_array($consulta1))
  6. {
  7. echo $registro1["budget"];
  8. }

alguna idea de que estoy haciendo mal? gracias...
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #5 (permalink)  
Antiguo 29/08/2012, 06:01
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: if en mysql????

¿Que error te devuelve MySOL?
__________________
¿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 29/08/2012, 06:25
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: if en mysql????

Hola! me devuelve el "No se pudo ejecutar la consulta"
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #7 (permalink)  
Antiguo 29/08/2012, 06:59
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: if en mysql????

Eso no parece un mensaje de MySQL. Puede ser un mensaje generado en la aplicación cuando fracasa una ejecución.
Es conveniente siempre que, cuando una ejecución de una consulta falle, se recupere el mensaje que devuelve MySQL ( en PHP se hace con mysql_error() y mysql_errno()), porque ese mensaje es el que realmente te indica lo que está sucediendo.
Hacer que la aplicación devuelva solamente un mensaje del tipo "no se pudo ejecutar la consulta", no ayuda al desarrollador a establecer cuál es el error.
En tu caso, el problema puede ser que sea el hecho de que hay un paréntesis de más, lo que representa un error de sintaxis (El mensaje recuperado sería "You have an symntax error near..."). Problemas del Copy+Paste...

Consejo de experiencia: Nunca ejecutes las pruebas de las consultas desde la aplicación, sino que debes probar toda sintaxis desde un fornt-end como phpMyAdmin, pro ejemplo.
- Captura la sentencia contruida.
- Copiala y pégala en una ventana de ejecución del phpMyadmin
- Ejecútala y verifica los resultados.
Recién entonces puedes usarla para la aplicación.
Código MySQL:
Ver original
  1. FROM anuncios
  2. WHERE id='327' AND((money='EUR' AND budget > '$dinero') OR budget = '$dinero*0.6');
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 29/08/2012, 07:13
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: if en mysql????

Ok gracias! lo pruebo!

PD: oido al dato con lo de
Cita:
Consejo de experiencia: Nunca ejecutes las pruebas de las consultas desde la aplicación, sino que debes probar toda sintaxis desde un fornt-end como phpMyAdmin, pro ejemplo.
- Captura la sentencia contruida.
- Copiala y pégala en una ventana de ejecución del phpMyadmin
- Ejecútala y verifica los resultados.
Recién entonces puedes usarla para la aplicación.
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #9 (permalink)  
Antiguo 29/08/2012, 08:38
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: if en mysql????

oye una pregunta se pueden concatenar...en plan:

CASE money WHEN 'EUR' THEN $geld ELSE WHEN 'USD' THEN $geld ELSE $geld*0.6 $geld*0.6 END AS money

bueno algo asi....

Muchas gracias!
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #10 (permalink)  
Antiguo 29/08/2012, 08:51
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: if en mysql????

Eso te conviene manejarlo en la aplicación.
De todos modos no es posible hacerlo en el WHERE, sino en todo caso en el SELECT.
Personalmente no lo considero una buena práctica. Prefiero que esa info salga en una columna, porque es más limpia la presentación en pantalla para el usuario.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 29/08/2012, 09:00
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: if en mysql????

Ok si estoy haciendo unos bocetos... hasta ahora he encontrado tres metodos para hacer esto:

a ver que te parecen, los dejo a qui por si a alguien mas le sirve:

con IF:

Código PHP:
Ver original
  1. $sql = "SELECT money, budget,
  2. if(money='USD',budget,budget*0.6) as jj
  3. FROM anuncios WHERE id='327'";
  4. $consulta = mysql_query($sql) or die ("No se pudo ejecutar la consulta");
  5. While ($registro=mysql_fetch_array($consulta))
  6. {
  7. echo $registro["name"];
  8. echo "<br/>";
  9. echo "kk=".$registro["jj"];
  10. }

con WHEN THEN que tu me has indicado XD:

Código PHP:
Ver original
  1. $sql2 = "SELECT
  2.     money, budget,
  3.     CASE money WHEN 'EUR' THEN $geld ELSE $geld*0.6 END AS money
  4. FROM anuncios WHERE id='327' AND $geld>money";
  5. $consulta2 = mysql_query($sql2) or die ("No se pudo ejecutar la consulta");
  6. While ($registro2=mysql_fetch_array($consulta2))
  7. {
  8. echo $registro2["money"];
  9. echo "<br/>";
  10. }

y con WHERE AND:

Código PHP:
Ver original
  1. $sql1 = "SELECT * FROM anuncios WHERE id='327' AND( (money='EUR' AND budget > '$dinero') OR budget = '$dinero*0.6');";
  2. $consulta1 = mysql_query($sql1) or die ("No se pudo ejecutar la consulta");
  3. While ($registro1=mysql_fetch_array($consulta1))
  4. {
  5. echo $registro1["budget"];
  6. }

-------------------------------------------------------------------------------------------------------

Estoy tratando de anidar ifs de manera que le diga es EUR si=imprime valor, no= ¿eres dolar?, si = imprimevalor no=¿eres rupias? blablabla

Si se te ocurre una buena idea de como hacerlo bienvenida es, de todas maneras toy a ello...
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #12 (permalink)  
Antiguo 29/08/2012, 09:01
 
Fecha de Ingreso: agosto-2012
Ubicación: Guanajuato
Mensajes: 12
Antigüedad: 11 años, 8 meses
Puntos: 2
Exclamación Respuesta: if en mysql????

Hey protoameeba.

Creo que tu consulta esta mal:

Código MySQL:
Ver original
  1. FROM anuncios
  2. WHERE id='327' AND((money='EUR' AND budget > '$dinero') OR budget = '$dinero*0.6');

El error puede deberse a que la multiplicación de $dinero por 0.6 NO debe llevar apóstrofes. Te lo digo porque yo probé que

SELECT * FROM `usuarios` where cuota > '9+1'
Devuelve 2 registros con cuota = 10 (int)

y SELECT * FROM `usuarios` where cuota > 9+1
No devuelve ningun registro porque todos son menores o iguales que 10

eee... quiero darte mi opinión con respecto a lo que dice nuestro compadre gnzsoloyo:

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Hacer que la aplicación devuelva solamente un mensaje del tipo "no se pudo ejecutar la consulta", no ayuda al desarrollador a establecer cuál es el error.
Por mi experiencia, prefiero mostrar mensajes como el tuyo de que "aquí ya hubo un error" a usar metodos como mysql_error(), eso es para mí un posible riesgo de seguridad en la aplicación, no me meto en más detalle. Pero voy de acuerdo con que hagas uso de un entrorno de pruebas como phpMyAdmin para que veas fácilmente el error que está ocurriendo y para que uses valores también de prueba, es decir algo como "WHERE tipo='gato' " en lugar de "WHERE tipo='$tipo' " te ayuda a descartar un problema de variables concatenadas.

Saludos.
  #13 (permalink)  
Antiguo 29/08/2012, 09:06
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 meses
Puntos: 52
Respuesta: if en mysql????

Cita:
Iniciado por protoameeba Ver Mensaje
Hola amiguetes!

tengo una tabla MYSQL

con campos "moneda" "dinero" entre otros, me gustaria saber si es posible efectuar una sentencia SQL como esta:


$sql = "SELECT * FROM usuarios WHERE nombre='$nombre' IF campo-moneda='euro' dinero=$dinero, else dinero=$dinero*0,6 ";

bueno algo asi ... gracias!
no admite if solo where, el where puede funcionar como if

me podrian apoyar, por fa me urge http://www.forosdelweb.com/f57/como-acceder-base-datos-hosting-mi-pagina-con-aplicacion-vb-net-2008-a-1010492/
  #14 (permalink)  
Antiguo 29/08/2012, 09:29
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: if en mysql????

all rifgt friends @mr_mojo_risin gracias tio! y @minombreesmm acabo justo ahora de hacer esto y funciona, obviamente es un boceto...hay que hacerlo bonito y poniendo las variables pertienentes, pero funciona y es un prototipo justo delo que necesitaba, echale un vistazo y me cuentas:

Código PHP:
Ver original
  1. $sql2 = "SELECT money, budget,
  2. if(money='USD',budget,if(money='ZAS','ahora_si',if(money='EUR','yepale',0))) as budget
  3. FROM anuncios WHERE id='327'";
  4. $consulta12 = mysql_query($sql2) or die ("No se pudo ejecutar la consulta");
  5. While ($registro12=mysql_fetch_array($consulta12))
  6. {
  7. echo $registro12["name"];
  8. echo "<br/>";
  9. echo "kk=".$registro12["budget"];
  10. }

el tema es que funciona...
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....

Etiquetas: select, sql, tabla, campos
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 06:11.