Busqueda engorrosa

From: "Miguel Angel" <mvillagomez(at)sayab(dot)com(dot)mx>
To: <pgsql-es-ayuda(at)postgresql(dot)org>
Cc: <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Busqueda engorrosa
Date: 2006-01-12 18:54:42
Message-ID: 20060113185738.970B99DC822@postgresql.org
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'

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.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message proves_es@yahoo.es 2006-01-12 21:05:15 Re: Re: Ploblemas de instalación en Windows (particion D)
Previous Message Esteban Osorio 2006-01-12 16:51:09 O.T. - Prueba de correo.