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

Consultas con Select en el From

Estas en el tema de Consultas con Select en el From en el foro de Bases de Datos General en Foros del Web. Se puede hacer en mysql consultas tipo... SELECT NOMBRE, avg(MENSAJES) 'MESAJES' FROM ( SELEC nombre 'NOMBRE', fecha, count (*) 'MENSAJES' FROM tabla GROUP BY NOMBRE,fecha) ...
  #1 (permalink)  
Antiguo 06/09/2005, 08:26
 
Fecha de Ingreso: agosto-2005
Mensajes: 79
Antigüedad: 18 años, 9 meses
Puntos: 0
Pregunta Consultas con Select en el From

Se puede hacer en mysql consultas tipo...

SELECT NOMBRE, avg(MENSAJES) 'MESAJES'
FROM ( SELEC nombre 'NOMBRE', fecha, count (*) 'MENSAJES'
FROM tabla
GROUP BY NOMBRE,fecha)
GROUP BY NOMBRE
ORDER BY MENSAJES desc


es q estoy intentando hacer una media... de mensajes escritos por dia.. .y no me sale la consulta dichosa...
  #2 (permalink)  
Antiguo 06/09/2005, 08:39
 
Fecha de Ingreso: agosto-2005
Mensajes: 79
Antigüedad: 18 años, 9 meses
Puntos: 0
Estaba mirando pero no encuentro por ningun lado... ay alguna manera de hacer medias...

asi en plan... SELECT NOMBRE, count(*)/count(fecha) 'MEDIA' FROM tabla....

o yo que se... yo esa manera de hacer las consultas en isql se puede hacer... es simulando una vista... pero creo q en estas versiones de mysql no se pueden hacer vistas... a ver si alguien sabe...
  #3 (permalink)  
Antiguo 06/09/2005, 08:42
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Pon la estructura de tu BD (las tablas que necesites) y de que quieres sacar exactamente la media, si no es un poco dificil
  #4 (permalink)  
Antiguo 06/09/2005, 08:51
 
Fecha de Ingreso: agosto-2005
Mensajes: 79
Antigüedad: 18 años, 9 meses
Puntos: 0
Mi tabla tiene.... nombre, fecha y contenido..

la idea es agrupar por fecha y nick... y sumar... y despues dividir entre la suma de las distintas fechas... si la teoria no es dificil.. la cosa es q me parece q no deja vistas..
  #5 (permalink)  
Antiguo 06/09/2005, 08:53
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Pero por lo que veo, no te valdría algo así:

Select nombre, (count(*)/(select count(distinct(fecha)) from tabla)) as media from tabla
  #6 (permalink)  
Antiguo 06/09/2005, 08:54
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Perdón:

Select nombre, (count(*)/(select count(distinct(fecha)) from tabla)) as media from tabla group by nombre

Con esto lo que obtienes es el nombre y el número de veces que aparece dividido entre la cantidad de fechas, es decir, el nombre y la media de veces que aparece por fecha
  #7 (permalink)  
Antiguo 06/09/2005, 09:03
 
Fecha de Ingreso: agosto-2005
Mensajes: 79
Antigüedad: 18 años, 9 meses
Puntos: 0
pos eso es q mi profe de base de datos me lo tenia prohibido.. de poner select en el select... pero lo he mirao y tp va... :(
  #8 (permalink)  
Antiguo 06/09/2005, 09:14
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
que error te lanza exactamente mysql xq a mi si que me funciona sin problemas.


¿Xq te prohíbe poner select dentro de select?????
  #9 (permalink)  
Antiguo 06/09/2005, 09:19
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
los select dentro de from también los adminte, pero no veo la manera de hacerlo de esa forma.
  #10 (permalink)  
Antiguo 06/09/2005, 09:25
 
Fecha de Ingreso: agosto-2005
Mensajes: 79
Antigüedad: 18 años, 9 meses
Puntos: 0
Error

consulta SQL :

SELECT autor, (

count( * ) / (
SELECT count( DISTINCT (
fecha
) )
FROM noticias )
) AS media
FROM noticias
GROUP BY autor
LIMIT 0 , 30

MySQL ha dicho:


#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT count( DISTINCT ( fecha ) )
FROM noticias ) ) AS medi
  #11 (permalink)  
Antiguo 06/09/2005, 09:31
 
Fecha de Ingreso: agosto-2005
Mensajes: 79
Antigüedad: 18 años, 9 meses
Puntos: 0
para hacerlo con el from se haria de la siguiente manera por ejemplo...

SELECT NICK, avg(veces) 'MEDIA'
FROM (select autor 'NICK', fecha, count(*) 'veces' from noticias group by NICK,fecha)
GROUP BY NICK

esto simularia una vista... q tendria como campos NICK, fecha y veces... entonces esos campos se cogerian en el select de arriba y lo que harias solo agrupar por nick y hacer la media con la funcio avg del cada numero de veces por dia.... pero tp va :(
  #12 (permalink)  
Antiguo 06/09/2005, 09:49
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Que versión de Mysql utilizas????Porque he hecho un copy/paste, he cambiao autor por cliente y noticias por visitas en una de mis BDs y funciona correctamente, quizá sea por eso.
  #13 (permalink)  
Antiguo 06/09/2005, 09:52
 
Fecha de Ingreso: agosto-2005
Mensajes: 79
Antigüedad: 18 años, 9 meses
Puntos: 0
funciona perfectamente lo que te he puesto yo del SELECT dentro del FROM?? yo sabia q eso iba que pa eso he sacao un notable en base de datos XDDD es un hosting gratuito voy a mirar a ver... MySQL version : 4.0.24_Debian-2 esa... tu cual tienes...
  #14 (permalink)  
Antiguo 06/09/2005, 10:04
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
mi version es 4.1.6, y exactamente, funcionan ambas, la que yo te puse (aunque calcula la media total) y la que tu pusiste que calcula la media diaria.
  #15 (permalink)  
Antiguo 06/09/2005, 10:31
 
Fecha de Ingreso: agosto-2005
Mensajes: 79
Antigüedad: 18 años, 9 meses
Puntos: 0
es q yo lo q queria es calcular la media diaria... pos tendre q tener en cuenta la version a la hora de contratar el hosting... porque en la pagina jugare mucho con las consultas... muchas gracias por todo!
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 00:41.