Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Bases de Datos General (http://www.forosdelweb.com/f21/)
-   -   ¿¿¿select... if... from.... [where...]??? (http://www.forosdelweb.com/f21/select-if-where-576881/)

pikeres 17/04/2008 04:06

¿¿¿select... if... from.... [where...]???
 
hola, buenas a todos:

he visto por ahi, algunas consultas de gente preguntando sus dudas, y vi una (bastante complicada por cierto) en la que dentro del select habia un if, es decir, "SELECT[campos] IF(????] [masCampos] FROM [tabla]......"

hace unos dias que estoy buscando como se hace este if (su sintaxis y funcionamiento) dentro del select, y al verlo aki en una consulta de otro forero, keria preguntaros si alguien me puede explicar como funciona, su sintaxis y todo eso.

tb kerria saber donde lo puedo utilizar: en sql server, oracle, mysql....

muchas gracias por adelantado. un saludo

gianco321 18/04/2008 02:20

Re: ¿¿¿select... if... from.... [where...]???
 
Hola el if hasta donde yo conozco no se puede en un Select pero lo puedes hacer de la siguiente form usando el Case, un ejemplo:

USE AdventureWorks;
GO
SELECT ProductNumber, Category =
CASE ProductLine
WHEN 'R' THEN 'Road'
WHEN 'M' THEN 'Mountain'
WHEN 'T' THEN 'Touring'
WHEN 'S' THEN 'Other sale items'
ELSE 'Not for sale'
END,
Name
FROM Production.Product
ORDER BY ProductNumber;
GO

Y se puede utilizar en MySQL, SQL Server, Posgress.

Espero haber resuelto tu duda lobo.

pikeres 18/04/2008 03:03

Re: ¿¿¿select... if... from.... [where...]???
 
os dejo el enlace de la pagina donde lo he visto
http://www.forosdelweb.com/f86/consulta-sql-complicada-576097/

fijaros bien ke hay dos if dentro del select

jurena 18/04/2008 05:09

Re: ¿¿¿select... if... from.... [where...]???
 
Hola, Pikeres,

En MySQL el IF como función de control de flujo se puede hacer en el SELECT.
ejemplo 1) te muestra el valor del campo1, y, además, si el valor del campo1 es mayor que 3, te muestra el texto primero y si no el segundo:
SELECT campo1, IF (campo1 >3, "es mayor que tres", "es menor que tres") AS resultado FROM nombretabla.

Naturalmente, también puedes mostrar campos:
ejemplo2) si el valor del campo1 es mayor que 3, te muestra el campo1 y si no el campo2
SELECT IF(campo1 > 3, campo1, campo2) AS campocondicionado FROM TABLA

El IF está pensado para una condición con dos opciones, aunque se puede anidar. Pero para hacer eso mejor, es decir, elegir entre varias opciones, debes usar el case when... then, que también puede usarse en el select, y cuya estructura es la que te ha mostrado GIANCO321. En este ejemplo lo que hacemos es ver el valor numérico del mes de un campo fecha, y según el valor, mostrar el nombre del mes en español. Aquí lo tienes en un select

SELECT
CASE WHEN MONTH(campofecha) = 1 THEN "enero"
WHEN MONTH(campofecha) = 2 THEN "febrero"
WHEN MONTH(campofecha) = 3 THEN "marzo"
WHEN MONTH(campofecha) = 4 THEN "abril"
WHEN MONTH(campofecha) = 5 THEN "mayo"
WHEN MONTH(campofecha) = 6 THEN "junio"
WHEN MONTH(campofecha) = 7 THEN "julio"
WHEN MONTH(campofecha) = 8 THEN "agosto"
WHEN MONTH(campofecha) = 9 THEN "septiembre"
WHEN MONTH(campofecha) = 10 THEN "octubre"
WHEN MONTH(campofecha) = 11 THEN "noviembre"
WHEN MONTH(campofecha) = 12 THEN "diciembre"
ELSE "esto no es un mes" END AS MESespañol from nombretabla

Sobre estas funciones de control de flujo, mira este enlace:

http://dev.mysql.com/doc/refman/5.0/...functions.html

pikeres 18/04/2008 05:39

Re: ¿¿¿select... if... from.... [where...]???
 
MUCHAS GRACIAS JURENA Y GIANCO!!!! :-D

una ultima pregunta, ese IF se puede utilizar en mysql, oracle y sql server (son los gestores que he utilizado, y se ke algunos de ellos cambian algunas cosillas)

un saludo :adios:

jurena 18/04/2008 07:54

Re: ¿¿¿select... if... from.... [where...]???
 
Pikeres,
Para SQL, mira lo que dice BrujoNic en este post
http://www.forosdelweb.com/f86/if-dentro-sql-477665/

Pero para tener un mejor conocimiento, debes recurrir a los manuales de referencia oficiales.
Yo sólo puedo ofrecerte el de MySQL
http://dev.mysql.com/doc/refman/5.0/es/index.html

y este otro para MySqL, que a mí me gusta especialmente
http://mysql.conclase.net/curso/index.php


La zona horaria es GMT -6. Ahora son las 04:13.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.