Bases de Datos - BD de una loteria

 
Vista:

BD de una loteria

Publicado por José Vásquez (1 intervención) el 20/10/2006 21:48:41
Buenas tardes.
Necesito ayuda para crear una base datos de una loteria. El juego es de 12, 11 y 10 aciertos de 24 numeros.
El problema q tengo es q no sé como hacer una tabla donde pueda hacer una busqueda de los ganadores con 11 y 10 aciertos.
Ej:
numeros ganadores 01,03,05,08,09,12,14,17,20,21,22,24

necesito sacar los ganadores con 11 aciertos
Ej:
03,05,08,09,12,14,17,20,21,22,24
01,05,08,09,12,14,17,20,21,22,24
01,03,08,09,12,14,17,20,21,22,24
01,03,05,09,12,14,17,20,21,22,24
01,03,05,08,12,14,17,20,21,22,24
01,03,05,08,09,14,17,20,21,22,24

no se como buscar esta cadena en la base datos sin q dure tanto la busquedad con el query.

La BD es postgres y la interfaz VB .NET
La tabla maestra tiene 2.700.000 combinaciones C(12,24)

Alguna sugerencia de busqueda optima se la agradeceria.

PD: he usado el like es muy lento.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:BD de una loteria

Publicado por Tom (3 intervenciones) el 23/10/2006 17:52:11
Yo haría dos tablas, más o menos así:

create table sorteos (
id_sorteo smallint not null,
numero smallint no null
);
-- (La clave primaria sería id_sorteo y numero, suponiendo que el mismo número no se repite en cada sorteo).

create table apuestas (
id_apuesta integer not null,
id_sorteo smallint not null,
numero smallint not null
);
-- (Todos los campos conforman la clave unica)

Para enlazar las dos tablas, sería algo así (no recuerdo exactamente la sintaxis de postgres):

select distinct id_apuesta, count(*)
from apuestas a join sorteos b on a.id_sorteo = b.id_sorteo and a.numero = b.numero
having count(*) = 10;

Si cambias el 10 por 11 ó 12, ya imaginas lo que pasaría.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar