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(13) NOT 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(13) NOT 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_barras) REFERENCES codigos_barras (codigo_barras) ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT videojuegos_id_distribuidora_fkey FOREIGN KEY (id_distribuidora) REFERENCES distribuidoras (id_distribuidora) ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT videojuegos_id_genero_fkey FOREIGN KEY (id_genero) REFERENCES generos (id_genero) ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT videojuegos_id_plataformas_fkey FOREIGN KEY (id_plataformas) REFERENCES plataformas (id_plataformas) ON UPDATE NO ACTION ON DELETE NO ACTION
)
Código PHP:
CREATE TABLE peliculas
(
codigo_barras varchar(13) NOT 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_barras) REFERENCES codigos_barras (codigo_barras) ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT peliculas_id_distribuidora_fkey FOREIGN KEY (id_distribuidora) REFERENCES distribuidoras (id_distribuidora) ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT peliculas_id_formato_fkey FOREIGN KEY (id_formato) REFERENCES formatos (id_formato) ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT peliculas_id_genero_fkey FOREIGN KEY (id_genero) REFERENCES generos (id_genero) ON UPDATE NO ACTION ON DELETE NO ACTION
)
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_barras) REFERENCES codigos_barras (codigo_barras) ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT alquileres_id_cliente_fkey FOREIGN KEY (id_cliente) REFERENCES clientes (id_cliente) ON UPDATE NO ACTION ON DELETE NO ACTION
)
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_barras) REFERENCES codigos_barras (codigo_barras) ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT compras_id_cliente_fkey FOREIGN KEY (id_cliente) REFERENCES clientes (id_cliente) ON UPDATE NO ACTION ON DELETE NO ACTION
)
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
Espero que me podais ayudar. Os lo agradezco un montón