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

ua pregunta(sobre consulta SQL)

Estas en el tema de ua pregunta(sobre consulta SQL) en el foro de Bases de Datos General en Foros del Web. bueno mi pregunta es,se puede usar una if en una consulta SQL? tipo asi: $query = "select datos1,datos2 FROM tabla ORDER BY IF (datos1)datos1 ELSE(datos2)datos2 ...
  #1 (permalink)  
Antiguo 30/08/2004, 16:52
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 20 años
Puntos: 0
ua pregunta(sobre consulta SQL)

bueno mi pregunta es,se puede usar una if en una consulta SQL?

tipo asi:
$query = "select datos1,datos2 FROM tabla ORDER BY IF (datos1)datos1 ELSE(datos2)datos2 desc";

bueno es un poco a lo rapido :D pero es que no se si se puede ni como ^^u gracias
  #2 (permalink)  
Antiguo 31/08/2004, 01:21
 
Fecha de Ingreso: junio-2004
Ubicación: Castellón, España
Mensajes: 98
Antigüedad: 19 años, 10 meses
Puntos: 0
Depende de que base de datos esté utilizando, en access sería de la siguiente forma:
Dentro del lenguaje SQL - IIf (Comparacion, Resultado si true, Resultado si false)
En el generador de expresiones - IIf (Comparacion; Resultado si true; Resultado si false)
En SQL Server sería de la forma siguiente:
CASE WHEN Comparación THEN Resultado si true ELSE Resultado si false END (en SQL Server OJO con los tipos de datos, puede darte errores fácilmente)
  #3 (permalink)  
Antiguo 31/08/2004, 02:17
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 20 años
Puntos: 0
me interesa el del SQL podrias ponerlo en un ejemplo real?:P es que me interesa aprender cada dia mas:P
  #4 (permalink)  
Antiguo 31/08/2004, 04:16
 
Fecha de Ingreso: junio-2004
Ubicación: Castellón, España
Mensajes: 98
Antigüedad: 19 años, 10 meses
Puntos: 0
tblFacturas: IdFactura; NoFactura; FechaFactura....

SELECT *, CASE WHEN DATEPART(yyyy, FechaFactura) = DATEPART(yyyy, GetDate()) THEN 'Ejercicio Actual' ELSE 'Ejercicios Anteriores' END AS Ejercicio FROM tblFacturas ORDER BY CASE WHEN DATEPART(yyyy, FechaFactura) = DATEPART(yyyy, GetDate()) THEN 0 ELSE 1 END, FechaFactura

En este ejemplo, tienes una tabla de facturas con la facha de factura y quieres:
1- Un campo donde te ponga 'Ejercicio Actual' si el año de la fecha de factura es el año en curso o 'Ejercicios Anteriores' la fecha de factura es de años anteriores:
CASE WHEN DATEPART(yyyy, FechaFactura) = DATEPART(yyyy, GetDate()) THEN 'Ejercicio Actual' ELSE 'Ejercicios Anteriores' END AS Ejercicio
2- Quieres que te ordene por fecha de factura de menor a mayor pero primero las del año en curso:
ORDER BY CASE WHEN DATEPART(yyyy, FechaFactura) = DATEPART(yyyy, GetDate()) THEN 0 ELSE 1 END, FechaFactura
Creo que con este ejemplo lo verás bastante claro.

Última edición por Atzeneta; 31/08/2004 a las 04:18
  #5 (permalink)  
Antiguo 31/08/2004, 04:46
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 20 años
Puntos: 0
muchas gracias :D ya entendi perfectamente como funciona ;)
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 02:15.