elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  duda sql
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: duda sql  (Leído 1,725 veces)
sebapoli00

Desconectado Desconectado

Mensajes: 20


Ver Perfil
duda sql
« en: 20 Noviembre 2019, 00:25 am »

buenas, tengo que hacer una consulta que implica saber si una persona asistio a varios eventos, mostrar la fecha de el ultimo evento al que asistio y sino asistio a ninguno poner que no asistio

asi lo venia haciendo hasta el momento

Código
  1. SELECT DISTINCT p.*, CASE
  2. WHEN --busco si asistio a eventos THEN --subconsulta ultima fecha del evento al que asistio
  3. ELSE 'No Asistió'
  4. END AS Asistencia
  5. FROM persona p, evento e, asistio a;
  6.  

el asunto es que luego de buscar si asistio, no logro poner la ultima fecha del evento al que asistio

intente a través de una subconsulta que la devuelva, pero no lo he logrado

el resto del codigo funciona correctamente porque si en vez de la subconsulta le pongo x cosa por ejemplo 'asistio' me compila y la salida me la devuelve correctamente

como puedo hacer funcionar esto? alguna sugerencia?



En línea

Carloswaldo
Traductor
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.762


Nos reservamos el derecho de ban.


Ver Perfil WWW
Re: duda sql
« Respuesta #1 en: 20 Noviembre 2019, 00:53 am »

No me parece que sea necesario hacer una subconsulta. Yo haría algo así:

Código
  1. SELECT p.nombre, CASE
  2. WHEN MAX(e.fecha) IS NOT NULL THEN
  3. MAX(e.fecha)::text
  4. ELSE
  5. 'No Asistió'
  6. END
  7. FROM persona p
  8. LEFT JOIN asistio a ON a.id_persona = p.id_persona
  9. JOIN evento e ON e.id_evento = a.id_evento
  10. GROUP BY p.nombre

No dices en qué motor estás trabajando, esto lo hice en PostgreSQL pero asumo que puedes hacer algo parecido en otros motores. Además no sé cuál es la estructura de las tablas pero estoy asumiendo que es una relación muchos a muchos entre persona y evento que se rompe con la tabla asistio.


En línea





Dominio en venta: https://forojapones.com/
sebapoli00

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: duda sql
« Respuesta #2 en: 20 Noviembre 2019, 11:49 am »

Estoy trabajando en sql developer y la tabla evento y persona se relacionan con la relacion asistio que va de 0 a n

No estoy en mi casa como para probar ese código pero en viento pueda te digo!

me lanza el mismo error que tenia antes:

ORA-00932: tipos de dato inconsistentes: se esperaba DATE se ha obtenido CHAR
00932. 00000 -  "inconsistent datatypes: expected %s got %s"
*Cause:   
*Action:
Error en la línea: 232, columna: 2

MOD: No hacer doble post. Usa el boton modificar.
« Última modificación: 20 Noviembre 2019, 14:08 pm por MCKSys Argentina » En línea

Carloswaldo
Traductor
Moderador Global
***
Desconectado Desconectado

Mensajes: 4.762


Nos reservamos el derecho de ban.


Ver Perfil WWW
Re: duda sql
« Respuesta #3 en: 20 Noviembre 2019, 14:31 pm »

El problema es que en una misma columna de resultado intentas retornar datos de tipos diferentes (DATE en el caso de que hayan asistido, y VARCHAR si no han asistido), así que tienes que incluir un casting para que funcione. En mi ejemplo el "::text" era el casting, como ya veo que estás en Oracle, tendrás que hacer el casting así:

Código
  1. CAST(MAX(e.fecha) AS VARCHAR(50))

Cuéntanos cómo te fue.
En línea





Dominio en venta: https://forojapones.com/
sebapoli00

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: duda sql
« Respuesta #4 en: 20 Noviembre 2019, 20:10 pm »

Si! Ya lo solucione de esa manera, muchisimas gracias por la ayuda!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pequeña duda con un comando batch (NUEVA DUDA RELACIONADA)
Scripting
revenge1252 9 9,738 Último mensaje 13 Febrero 2008, 21:41 pm
por revenge1252
Duda duda y duda de Metasploit
Bugs y Exploits
huber_nomas 4 5,775 Último mensaje 17 Febrero 2012, 14:00 pm
por MauroMasciar
Duda facil, [VIDEO QUE EXPLICA MI DUDA]
Diseño Gráfico
Ngeooz 6 8,844 Último mensaje 2 Diciembre 2013, 19:33 pm
por Ngeooz
[DUDA] Cambiar letra de unidad a archivo con un Batch [DUDA] « 1 2 »
Windows
MrMaticool 10 11,280 Último mensaje 12 Febrero 2014, 17:55 pm
por MrMaticool
[DUDA] Crear servidor telnet o ssh (Windows y Linux) y otra duda
Redes
MDd2 4 4,003 Último mensaje 13 Abril 2017, 18:29 pm
por Randomize
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines