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

consulta select

Estas en el tema de consulta select en el foro de Mysql en Foros del Web. Hola a todos: Quiero hacer un par de cosas y no sé cómo ni si es posible hacerlas, una de ellas es que kiero concatenar ...
  #1 (permalink)  
Antiguo 28/06/2006, 00:58
 
Fecha de Ingreso: marzo-2005
Mensajes: 276
Antigüedad: 19 años, 1 mes
Puntos: 0
Pregunta consulta select

Hola a todos:
Quiero hacer un par de cosas y no sé cómo ni si es posible hacerlas, una de ellas es que kiero concatenar 3 campos de una tabla y guardarlos con un alias, por ejemplo, tipo, dirección y numero que sean calle. por otra parte y para el más dificil todavía quiero preguntar si en una columna pone un literal que en otra columna creada por mi aparezca SI y sino NO, es decir, si en el campox pone 'CASO' que me ponga SI en una columna que yo llame asociado y sino que ponga NO.
Intuyo que en una consulta es bastante dificil de hacer pero si alguien sabe otra manera de hacerlo...
  #2 (permalink)  
Antiguo 28/06/2006, 07:33
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Prueba con esto:


select concat(tipo," ", direccion, " ", numero) as calle, if(campox='CASO','SI','NO') as asociado from tabla
  #3 (permalink)  
Antiguo 28/06/2006, 07:36
 
Fecha de Ingreso: julio-2002
Mensajes: 322
Antigüedad: 21 años, 9 meses
Puntos: 0
Para concatenar tienes la funcion "concat". El resto de la pregunta la verdad es que no lo entiendo muy bien.
__________________
Saludos

Rubén
Teléfonos móviles, curiosidades: http://telefonos-moviles.muchodenada.com/
  #4 (permalink)  
Antiguo 05/07/2006, 05:12
 
Fecha de Ingreso: marzo-2005
Mensajes: 276
Antigüedad: 19 años, 1 mes
Puntos: 0
la función concat funcionó pero con el if me dice que hay error de sintaxis o keyword incorrecta, jo! no sé qué hacer...
  #5 (permalink)  
Antiguo 05/07/2006, 07:41
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Escribe un ejemplo de lo que quieres lograr, con nombres de campos y datos, para entenderte mejor. Coloca además la sentencia que intentaste y el error exacto que obtuviste, la version de mysql y todo eso, para no estar adivinando.
  #6 (permalink)  
Antiguo 06/07/2006, 00:32
 
Fecha de Ingreso: marzo-2005
Mensajes: 276
Antigüedad: 19 años, 1 mes
Puntos: 0
La consulta es esta:
SELECT { fn CONCAT({ fn CONCAT({ fn CONCAT({ fn CONCAT(dbo.PCTAS.Domsig, '. ') }, dbo.PCTAS.Direccio) }, ', ') }, dbo.PCTAS.Numero) } AS direccion,
{ fn IF dbo.PFA_FUNCDT2ASO.C0001 = 1 THEN ['SI'] ELSE ['NO'] } AS asociado
FROM dbo.PCTAS INNER JOIN
dbo.PFA_FUNCDT2ASO ON dbo.PCTAS.Codigo = dbo.PFA_FUNCDT2ASO.Cuenta

Y el error es este:
Error en la lista de argumentos de función: 'IF' no reconocido.
Falta una cláusula FROM.
No se puede analizar el texto de la consulta.
  #7 (permalink)  
Antiguo 06/07/2006, 00:47
 
Fecha de Ingreso: julio-2002
Mensajes: 322
Antigüedad: 21 años, 9 meses
Puntos: 0
No estoy seguro, pero diria que el IF no existe en SQL (si en pl/sql y derivados, pero para no para hacer una consulta).

Puedes probar algo asi:

SELECT { fn CONCAT({ fn CONCAT({ fn CONCAT({ fn CONCAT(dbo.PCTAS.Domsig, '. ') }, dbo.PCTAS.Direccio) }, ', ') }, dbo.PCTAS.Numero) } AS direccion,
replace(replace(dbo.PFA_FUNCDT2ASO.C0001, '1', 'SI'), '0', 'NO') AS asociado
FROM dbo.PCTAS INNER JOIN
dbo.PFA_FUNCDT2ASO ON dbo.PCTAS.Codigo = dbo.PFA_FUNCDT2ASO.Cuenta
__________________
Saludos

Rubén
Teléfonos móviles, curiosidades: http://telefonos-moviles.muchodenada.com/
  #8 (permalink)  
Antiguo 06/07/2006, 01:52
 
Fecha de Ingreso: junio-2006
Mensajes: 87
Antigüedad: 17 años, 9 meses
Puntos: 0
Prueba con

IF (dbo.PFA_FUNCDT2ASO.C0001= 1,'SI','NO')

y por si hubiese más opciones con algo asi:

SELECT CASE dbo.PFA_FUNCDT2ASO.C0001
WHEN 1 THEN 'SI'
ELSE 'NO' end
FROM dbo.PCTAS INNER JOIN
dbo.PFA_FUNCDT2ASO ON dbo.PCTAS.Codigo = dbo.PFA_FUNCDT2ASO.Cuenta
  #9 (permalink)  
Antiguo 06/07/2006, 02:18
Avatar de nosoynadie  
Fecha de Ingreso: noviembre-2005
Ubicación: dando vueltas por aquí
Mensajes: 206
Antigüedad: 18 años, 4 meses
Puntos: 1
lo siento pero no puedo evitar haceros esta pregunta:

la lógica de la sentencia sql la sigo .. ¿pero que significan los 'fn' antes de CONCAT?
Código:
SELECT 
	{ 
	fn CONCAT(
		{
		fn CONCAT(
			{
				fn CONCAT(
				{
					fn CONCAT(dbo.PCTAS.Domsig, '. ') 
				}, dbo.PCTAS.Direccio) 
			}
			, ', '
			) 
		}, dbo.PCTAS.Numero
	) 
} AS direccion,
replace(replace(dbo.PFA_FUNCDT2ASO.C0001, '1', 'SI'), '0', 'NO') AS asociado
FROM dbo.PCTAS 
INNER JOIN dbo.PFA_FUNCDT2ASO ON dbo.PCTAS.Codigo = dbo.PFA_FUNCDT2ASO.Cuenta
Disculpad la pregunta si es una tontería
__________________
http://www.nosoynadie.net/
  #10 (permalink)  
Antiguo 06/07/2006, 09:58
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
En mysql existe la funcion de control de flujo IF() (que indiqué en mi ejemplo de código), que no es un statement (no sé que palabra sea la adecuada en español), tambien existe el statement IF que se usa en procedimientos almacenados.

La funcion IF() no es parte del estandar SQL, pero está implemntada y se puede usar en MySql. En el ejemplo que da Jennifer_munn no la usó bien, sino que trató de usar el statement, lo cual no es correcto. La forma correcta es la que usa el ejemplo de seanchan, y tambien es correcto el uso de CASE.

Jennifer_munn, respecto de CONCAT(), no te basta con algo asi?

concat(tipo," ", direccion, " ", numero) as calle
  #11 (permalink)  
Antiguo 07/07/2006, 04:35
 
Fecha de Ingreso: marzo-2005
Mensajes: 276
Antigüedad: 19 años, 1 mes
Puntos: 0
el hacer el concat de esa manera tan complicada es porque al hacerlo como tú dices me decia que concat solo admitia concatenar 2 valores... La manera más sencilla de hacer el IF que quería me pareció el replace y tengo q decir que funcionó. MIL GRACIAS!!!!!
  #12 (permalink)  
Antiguo 07/07/2006, 06:37
 
Fecha de Ingreso: julio-2002
Mensajes: 322
Antigüedad: 21 años, 9 meses
Puntos: 0
me alegro
__________________
Saludos

Rubén
Teléfonos móviles, curiosidades: http://telefonos-moviles.muchodenada.com/
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 14:39.