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

Selección de campos heredados y agrupados por número de apariciones

Estas en el tema de Selección de campos heredados y agrupados por número de apariciones en el foro de Bases de Datos General en Foros del Web. Hola a todos: Tengo un problema al intentar hacer una selección múltiple en una base de datos SQL por el número de apariciones de unos ...
  #1 (permalink)  
Antiguo 02/01/2006, 05:43
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 20 años, 9 meses
Puntos: 0
Selección de campos heredados y agrupados por número de apariciones

Hola a todos:

Tengo un problema al intentar hacer una selección múltiple en una base de datos SQL por el número de apariciones de unos registros determinados.

La base de datos simula la gestión de Videojuegos y Películas de un videoclub, y mi intención es hacer una selección que te muestre los 25 videojuegos más solicitados (tanto alquilados como comprados) y otro listado de 25 igual pero sólo para películas.

El problema me aparece por que toda esta información está repartida entre varias bases de datos, que son estas:

CODIGOS_BARRAS: Guarda los códigos de barras ficticios de los artículos que habría en el videoclub:
Código PHP:
CREATE TABLE codigos_barras
(
  
codigo_barras varchar(13NOT NULL,
  
CONSTRAINT codigos_barras_pkey PRIMARY KEY (codigo_barras)


VIDEOJUEGOS: relaccionaría los codigos de barras con la información sobre los videojuegos:
Código PHP:
CREATE TABLE videojuegos
(
  
codigo_barras varchar(13NOT NULL,
  
id_plataformas int2,
  
id_distribuidora int2,
  
id_genero int2,
  
titulo varchar(20),
  
sinopsis varchar(100),
  
ruta_portada varchar(100),
  
en_alquiler int2,
  
en_venta int2,
  
precio int2,
  
CONSTRAINT videojuegos_pkey PRIMARY KEY (codigo_barras),
  
CONSTRAINT videojuegos_codigo_barras_fkey FOREIGN KEY (codigo_barrasREFERENCES codigos_barras (codigo_barrasON UPDATE NO ACTION ON DELETE NO ACTION,
  
CONSTRAINT videojuegos_id_distribuidora_fkey FOREIGN KEY (id_distribuidoraREFERENCES distribuidoras (id_distribuidoraON UPDATE NO ACTION ON DELETE NO ACTION,
  
CONSTRAINT videojuegos_id_genero_fkey FOREIGN KEY (id_generoREFERENCES generos (id_generoON UPDATE NO ACTION ON DELETE NO ACTION,
  
CONSTRAINT videojuegos_id_plataformas_fkey FOREIGN KEY (id_plataformasREFERENCES plataformas (id_plataformasON UPDATE NO ACTION ON DELETE NO ACTION

Y PELICULAS lo mismo pero para las películas:
Código PHP:
CREATE TABLE peliculas
(
  
codigo_barras varchar(13NOT NULL,
  
id_distribuidora int2,
  
id_formato int2,
  
id_genero int2,
  
titulo varchar(20),
  
sinopsis varchar(100),
  
director varchar(20),
  
actores varchar(50),
  
duracion int2,
  
ruta_portada varchar(100),
  
en_alquiler int2,
  
en_venta int2,
  
precio int2,
  
CONSTRAINT peliculas_pkey PRIMARY KEY (codigo_barras),
  
CONSTRAINT peliculas_codigo_barras_fkey FOREIGN KEY (codigo_barrasREFERENCES codigos_barras (codigo_barrasON UPDATE NO ACTION ON DELETE NO ACTION,
  
CONSTRAINT peliculas_id_distribuidora_fkey FOREIGN KEY (id_distribuidoraREFERENCES distribuidoras (id_distribuidoraON UPDATE NO ACTION ON DELETE NO ACTION,
  
CONSTRAINT peliculas_id_formato_fkey FOREIGN KEY (id_formatoREFERENCES formatos (id_formatoON UPDATE NO ACTION ON DELETE NO ACTION,
  
CONSTRAINT peliculas_id_genero_fkey FOREIGN KEY (id_generoREFERENCES generos (id_generoON UPDATE NO ACTION ON DELETE NO ACTION

ALQUILERES registraría todos los alquileres que ha habido:
Código PHP:
CREATE TABLE alquileres
(
  
id_alquiler int2 NOT NULL,
  
codigo_barras varchar(13),
  
id_cliente varchar(9),
  
fecha_alquiler timestamp,
  
fecha_devolucion timestamp,
  
importe int2,
  
CONSTRAINT alquileres_pkey PRIMARY KEY (id_alquiler),
  
CONSTRAINT alquileres_codigo_barras_fkey FOREIGN KEY (codigo_barrasREFERENCES codigos_barras (codigo_barrasON UPDATE NO ACTION ON DELETE NO ACTION,
  
CONSTRAINT alquileres_id_cliente_fkey FOREIGN KEY (id_clienteREFERENCES clientes (id_clienteON UPDATE NO ACTION ON DELETE NO ACTION

COMPRAS haría lo mismo para las compras:
Código PHP:
CREATE TABLE compras
(
  
id_compra int2 NOT NULL,
  
codigo_barras varchar(13),
  
id_cliente varchar(9),
  
fecha_compra timestamp,
  
cantidad int2,
  
importe int2,
  
CONSTRAINT compras_pkey PRIMARY KEY (id_compra),
  
CONSTRAINT compras_codigo_barras_fkey FOREIGN KEY (codigo_barrasREFERENCES codigos_barras (codigo_barrasON UPDATE NO ACTION ON DELETE NO ACTION,
  
CONSTRAINT compras_id_cliente_fkey FOREIGN KEY (id_clienteREFERENCES clientes (id_clienteON UPDATE NO ACTION ON DELETE NO ACTION

Ahora, ¿Cómo puedo hacer una consulta que me coja de la TABLA COMPRAS los 25 códigos de barras que más aparezcan pero que sólo pertenezcan a la base de datos PELÍCULAS? creo que los tiros irían por aquí:

Código PHP:
select compras.codigo_barras,count(compras.codigo_barras) as total from compras group by compras.codigo_barras order by total desc limit 25 
Pero a esta consulta le falta de tooodo, por que me agrupa todos los códigos de barras por su número de aparición y me los ordena, pero no me filta por videojuego/película...

Espero que me podais ayudar. Os lo agradezco un montón
  #2 (permalink)  
Antiguo 03/01/2006, 09:11
 
Fecha de Ingreso: enero-2006
Mensajes: 1
Antigüedad: 18 años, 3 meses
Puntos: 0
Posible solución??

Mu wenas dolar!

Pues mira, he estado mirando lo ke me planteaste ayer, y tal vez ésta pueda ser una solucíón. (Filtrado para pelis) Espero ke funcione!

Código PHP:
select codigo_barrascount(codigo_barras) as total from compras where codigo_barras in (select codigo_barras from peliculas)group by codigo_barras order by total desc limit 25 
Bye!
  #3 (permalink)  
Antiguo 03/01/2006, 12:45
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 20 años, 9 meses
Puntos: 0
Juas! tiene muy buena pinta!

Voy a echar un ojo a la consulta.

Muchas gracias!!
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 09:07.