Re: Busqueda engorrosa

From: Espartano <espartano(dot)mail(at)gmail(dot)com>
To: Miguel Angel <mvillagomez(at)sayab(dot)com(dot)mx>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Busqueda engorrosa
Date: 2006-01-13 19:16:09
Message-ID: d353bd50601131116j7d21d7afm@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

> Antes que nada quiero dar las gracias a los integrantes de la lista ya que
> me han ayudado bastante.
>
> Mi problema es este:
>
>
>
> Tengo mi bd con varias tablas una de ellas es estudiantes en la cual
> almaceno el registro de 2,500
>
> alumnos entre sus diversos datos tengo la columna especialidades.
>
> Mas o menos asi
>
>
>
> Tabla Estudiantes
>
>
>
> Nombre Grado Asignatura Especialidad
>
> -- -- -- A
>
> -- -- -- B
>
> -- -- -- C
>
> -- -- -- D
>
>
>
> Lo que tengo que hacer es contar cuantos alumnos hay es la especialidad A,
> B, C; puesto que son 15
>
> especialidades diferentes y no tener que hacer 15 veces:
>
>
>
> select count(especialidad) from estudiantes where especialidades='A'

Prueba select count(especialidad), especialidad from alumnos group by
especialidad;

>
> Quiero preguntar si se puede hacer una tabla que en una columna me arroje
> las especialidades y en otra
>
> el numero de alumnos que estan en esa especialidad, ejemplo:
>
>
>
> Especialidad Cantidad
>
> A 10
>
> B 159
>
> C 243
>
> D 17
>
>
> Tengo la idea de querer guardar los diferentes valores de especialidades
> dentro de un array y despues
>
> usar un ciclo que cuente cada especialidad y lo guarde en otro array si
> quieren
>
> (preferiria un array de dos dimensiones para guardar en el primero la
> especialidad y en el segundo
>
> la cantidad ya sea haciendo cast o que lo guarde en formato de caracter,
> pero no se si en primer lugar
>
> se pueda declarar dicha variable en postgresql; ya que tengo entendido que
> puede tener codigo en C)
>
> y despues muestre dicho array o pongo los valores en una tabla que sirva de
> aux.
>
>
>
>
>
> La otra idea que tengo es crear una tabla AUX almacenar los distintos
> valores de especialidades y despues
>
> leer cada fila para hacer la busqueda dentro de mi tabla y guardar el
> resultado dentro de otra columna en AUX,
>
> creo que seria asi:
>
>
>
> FilaA=inicio de la columna A(donde estan especialidades) en la tabla AUX
>
> FilaB=inicio de la columna B(donde estaran los resultados de cont) en la
> tabla AUX
>
>
>
> while(No se llegue al final de la tabla en la columnaB)
>
> {
>
> insert int aux.columnaB.FilaB select count(especialides) from estudiantes
> where especialides=aux.columnaA.FilaA;
>
> columnaB.filaB++; (pasar a la siguiente fila)
>
> columnaA.filaA++; (pasar a la siguiente fila)
>
> }
>
>
>
> Pongo estar razones asi pues programo en C++, pero no tengo idea de como:
>
> - Declarar una variable si se puede
>
> - Hacer una funcion en C dentro de postgres
>
> - Tomar el valor de una celda en una columna y fila especificas
>
>
>
> Me pueden dar alguna sugerencia, por favor; tal vez este diciendo una
> estupidez o sea muy simple y me ahogo en un simple vaso de agua; pero en
> serio no se como hacer eso.

Puedes hacerte un trigger para que cada vez que inserten un alumno de
x especialidad el trigger actualize tu tabla que quieres crear.

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Espartano 2006-01-13 19:34:56 Re: Busqueda engorrosa
Previous Message Juanky Moral 2006-01-13 19:14:23 Re: RE: Consulta sobre campo tipo Money