Foros del Web » Programando para Internet » PHP »

Consulta con repeticiones contadas en array

Estas en el tema de Consulta con repeticiones contadas en array en el foro de PHP en Foros del Web. Buenas, lo que intento hacer a grandes rasgos es lo que indica el título, he encontrado soluciones parciales, pero no consigo hacer cuadrar todo... Creo ...
  #1 (permalink)  
Antiguo 05/01/2012, 14:14
 
Fecha de Ingreso: enero-2012
Ubicación: Serra do Galiñeiro
Mensajes: 20
Antigüedad: 12 años, 10 meses
Puntos: 1
Consulta con repeticiones contadas en array

Buenas,
lo que intento hacer a grandes rasgos es lo que indica el título, he encontrado soluciones parciales, pero no consigo hacer cuadrar todo...
Creo que lo mejor es que lo plantee como una consulta nueva, para ver otras posibles formas de armarlo.
Tengo una "tabla" con los siguientes datos:

ID | año1 | año2 | año3 | pro_id | ...etc
================================
1 | 2000 | 2008 | 2011 | 25 | ...etc
2 | 2001 | 2006 | 2011 | 37 | ...etc
3 | 2002 | 2006 | 2011 | 29 | ...etc


de la cual necesito sacar un array en esta forma:

Código PHP:
$data['año'] = veces_que_se_repite
y con este orden

Código PHP:
$data['2011'] = 3;
$data['2006'] = 2;
...
etc 
La consulta debería ser algo asi....no? :

Código PHP:
$conexion=@mysql_connect("localhost""usuario""pass");
mysql_select_db"BBDD"$conexion);
$consulta1="SELECT año1, año2, año3
          COUNT(*) AS repeticiones
          FROM tabla
          GROUP BY ??? DESC"
;

$resultadomysql_query ($consulta1$conexion); 
y luego para el array, he visto algunas formas de hacerlo, pero claro, ya no realizo bien la consulta creo...en fin, a ver si alguien puede iluminarme.

Saludos!
  #2 (permalink)  
Antiguo 05/01/2012, 14:39
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 5 meses
Puntos: 641
Respuesta: Consulta con repeticiones contadas en array

bueno como esto es un foro de php no me preocuparé de la consulta. podrias seleccionar simplemente asi y con un count

Código PHP:
Ver original
  1. for($i = 2000; $i<=2012; $i++){
  2.     $sql = "SELECT count(*) AS rep FROM tabla_anios WHERE anio = $i";
  3.     $res = mysql_query ($sql, $conexion);
  4.     $data = array();
  5.     data[$i] = $res['rep'];
  6. }
listo...

creo :S
  #3 (permalink)  
Antiguo 05/01/2012, 15:24
 
Fecha de Ingreso: enero-2012
Ubicación: Serra do Galiñeiro
Mensajes: 20
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Consulta con repeticiones contadas en array

Hola memoadian.
Gracias por responder tan rápido! En un principio dudé en a que foro enviar la consulta, pero ahora creo que hubiese sido mas apropiado el foro de MySQL.

La consulta, la quiero realizar solo sobre algunas de las columnas de la tabla, en la consulta del ejemplo seleccionas todas las columnas de la tabla, supongo que por eso no me funciona...

La solución que me ofreces para el array me encanta, la que mas me gusta de las que he visto, ya que puedo cambiar el 2000 o el 2012 por variables y enviarles el valor desde un formulario (para filtrar periodos concretos).
Bueno, pues a ver si alguien me hecha un cable con la consulta :P

Saludos.
  #4 (permalink)  
Antiguo 05/01/2012, 15:29
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 5 meses
Puntos: 641
Respuesta: Consulta con repeticiones contadas en array

http://dev.mysql.com/doc/refman/5.0/...ting-rows.html

lee eso :)

la consulta esta bien planteada, pruebala en tu phpmyadmin primero obvio debes cambiar los valores para decuarlos a tu tabla :)
  #5 (permalink)  
Antiguo 05/01/2012, 18:30
 
Fecha de Ingreso: enero-2012
Ubicación: Serra do Galiñeiro
Mensajes: 20
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Consulta con repeticiones contadas en array

Tienes razón con lo de la consulta, pero sigue sin funcionarme :P, así es como lo tengo ahora

Código PHP:
<?php
for($i 2000$i<=2012$i++){
$consulta "SELECT
    count(*) AS rep
    FROM tabla_anios
    WHERE anio1=$i OR anio2=$i OR anio3=$i"
;
//error===============================================
$resmysql_query ($consulta$conexion);
    if (!
$res) {
        print 
'no se ejecuta la consulta';  
    }
//====crear array  =================================
$data = array();
$data[$i] = $res['rep'];
}
//==mostrar contenido array=============
print implode(',',$data);
?>
la consulta me funciona en phpmyadmin, en teoría se está ejecutando también en el script, pero el array parece vacio...alguna idea??

Saludos.
  #6 (permalink)  
Antiguo 06/01/2012, 18:57
 
Fecha de Ingreso: enero-2012
Ubicación: Serra do Galiñeiro
Mensajes: 20
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Consulta con repeticiones contadas en array

He probado alguna otra forma ...pero con el mismo resultado, alguien podría ayudarme por favor?

Saludos.
  #7 (permalink)  
Antiguo 07/01/2012, 00:34
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 5 meses
Puntos: 641
Respuesta: Consulta con repeticiones contadas en array

Esta un poco raro que no te funcione, la unica probabilidad es que en si la consulta no te devuelva nada en el script, primero deberias serciorarte que la consulta devuelve algo sin el for y luego avanzar a eso.

Un error mio en esta parte del código:
$data[$i] = $res['rep'];

eso te guardará los datos en $data[2000]

sería suficiente con ponerlo así:

$data[] = $res['rep'];
  #8 (permalink)  
Antiguo 07/01/2012, 10:52
 
Fecha de Ingreso: enero-2012
Ubicación: Serra do Galiñeiro
Mensajes: 20
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Consulta con repeticiones contadas en array

Finalmente lo he conseguido de esta forma:

Código PHP:
<?php
for ($i=1$i<=50$i++){

$cont=mysql_query("SELECT
    COUNT(*) AS rep
    FROM tabla
    WHERE n1=$i OR n2=$i OR n3=$i"
);
if (! 
$cont) {
        print 
'no se ejecuta la consulta';  
    }
$datos mysql_fetch_array($cont);
$res $datos['rep'];
$data[$i]=$res;
}
?>
gracias por la ayuda memoadian

Saludos.
  #9 (permalink)  
Antiguo 07/01/2012, 21:08
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 5 meses
Puntos: 641
Respuesta: Consulta con repeticiones contadas en array

claro, faltaba el mysql_fetch_array XD

Etiquetas: php+bd+mysql
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:13.