Hola mickey1909:
al poner dos llaves primarias que es lo permitido y una llave foranea necesito insertar algunos datos a la tabla inscripcion que estan repetidos pero me sale error porque las llaves primarias no se les puede duplicar los datos que puedo hacer con
eso y con estas consultas:
Eso no es correcto. Sólo puede haber una llave primaria, pero si puede estar compuesta por varios campos.
Create Table inscripciones(
documento varchar(20) constraint fkDocs foreign key
references documentos (documento), codigodeporte bigint
, año int
, ....
, primary key (documento, codigodeporte, año)
);
Y no se puede insertar registros duplicados nunca.
Muestre el nombre del socio, el nombre del deporte en que se inscribió y el año empleando diferentes tipos de join.
Te esta solicitando que uses por ejemplo INNER JOIN/LEFT JOIN/RIGHT JOIN
Diferentes tipos de joins
https://javifer2.wordpress.com/2019/09/16/combinaciones-entre-tablas-inner-left-right-full/
Puedes hacer socios inner join deportes inner join inscripciones. O socios left join deportes left join inscripciones O ....
10- Muestre todos los datos de las inscripciones (excepto los códigos) incluyendo aquellas inscripciones cuyo código de deporte no existe en "deportes" y cuyo documento de socio no se encuentra en "socios".
Si para lo anterior has utilizado la segunda opción ya lo tienes resuelto.
11- Muestre todas las inscripciones del socio con documento que haya registrado varios deportes en varios años.
Esto lo puedes resolver de muchas maneras.
Select inscripciones.documento, s.nombre,
count(distinct codigoDeporte) as deportes,
count(distinct año) as anuales
from inscripciones inner join socios s
on inscripciones.documento = s.documento
group by inscripciones.documento, s.nombre
Luego tendrás que utilizar having para restringir los que no encajen en lo solicitado.
Group by
https://javifer2.blogspot.com/search/label/group%20by
Having
https://carmoreno.com.co/sql/2017/02/09/Diferencia-entre-having-y-where/
Aunque el ejemplo del having es para oracle, solo hay que cambiar en la definicion de la tabla por esta
CREATE TABLE peliculas(
codigo int NOT NULL,
nombre VARCHAR(40) NOT NULL,
director VARCHAR(30) DEFAULT 'Desconocido',
fecha_lanzamiento DATE,
genero VARCHAR(20),
recaudo float,
PRIMARY KEY(codigo)
);