ExoticC 0 Posted December 16, 2018 Boa noite, Estou enrascado para um trabalho na faculdade que tenho de entregar até amanhã e não consigo fazer 3 funções ... se me pudessem ajudar agradecia imenso Spoiler CREATE TABLE musico_artista( id NUMERIC(6), nome VARCHAR(40) NOT NULL, n_artistico VARCHAR(20) NOT NULL, ano NUMERIC(4) NOT NULL, -- novo E2: início de atividade-- CONSTRAINT pk_musico PRIMARY KEY(id), CONSTRAINT un_musico_n_artistico -- nome artístico unico-- UNIQUE(n_artistico), CONSTRAINT ck_musico_id CHECK(id > 0), CONSTRAINT ck_musico_ano CHECK(ano BETWEEN 1900 AND 2100) ); CREATE TABLE papel_musical( papel CHAR(15), descricao VARCHAR(30) NOT NULL, CONSTRAINT pk_papel_musical PRIMARY KEY(papel), CONSTRAINT un_papel_musical_descricao UNIQUE(descricao) -- descrição única -- ); CREATE TABLE habilitado( musico NUMERIC(6), papel CHAR(15), nivel CHAR, -- novo -- CONSTRAINT pk_habilitado PRIMARY KEY(musico,papel), CONSTRAINT ck_habilitado_nivel CHECK(nivel in('P','A')), -- Profissional ou Amador -- CONSTRAINT fk_habilitado_musico FOREIGN KEY(musico) REFERENCES musico_artista(id), CONSTRAINT fk_habilitado_papel FOREIGN KEY(papel) REFERENCES papel_musical(papel) ); CREATE TABLE banda_artista( codigo NUMERIC(5), -- novo -- nome VARCHAR(30) NOT NULL, tipo CHAR(5) NOT NULL, ano NUMERIC(4) NOT NULL, -- novo: ano de formação/criação -- CONSTRAINT pk_banda_artista PRIMARY KEY(codigo), CONSTRAINT un_banda_artista -- nome unico -- UNIQUE(nome), CONSTRAINT ck_banda_artista_tipo CHECK(tipo in ('banda','solo')), CONSTRAINT ck_banda_artista_ano CHECK(ano BETWEEN 1900 AND 2100) ); CREATE TABLE desempenha( banda_artista NUMERIC(5), musico NUMERIC(6), papel CHAR(15), cachet NUMERIC(3) NOT NULL, CONSTRAINT pk_desempenha PRIMARY KEY(banda_artista,musico,papel), CONSTRAINT ck_desempenha_cachet CHECK(cachet BETWEEN 0 AND 100), -- percentagem -- CONSTRAINT fk_desempenha_habilitado FOREIGN KEY(musico,papel) REFERENCES habilitado(musico,papel) ); Spoiler -- 7. ID e nome artístico dos músicos que pertencem a mais bandas/artistas solo, em cada papel. -- Notas: em caso de empate, devem ser mostrados todos os músicos em causa. -- 8. Para cada ano de início de actividade, o ID e nome do músico que está habilitado a desempenhar mais papeis. -- Listar também o número total de papeis para que está habilitado, e o maior e menor cachet obtido no desempenho desses papeis. -- Nota: em caso de empate do total de papeis, devem ser mostrados todos os músicos em causa. -- 9. ID e nome artístico dos músicos que pertencem a menos de três bandas (não solo) distintas, -- mesmo que não tenham participado em nenhuma banda. -- Esta interrogação deve usar apenas um SELECT, ou seja sem sub-interrogações. No 1º está o código e no 2º os selects que não consigo fazer .. agradecia ajuda urgente ! Share this post Link to post Share on other sites
Portugapt 342 Posted December 16, 2018 Só assim por acaso, não andas na FCUL? É porque acho que o pessoal lá do curso anda com um trabalho parecido, apesar de não ter dado uma grande vista de olhos naquilo. Já agora desculpa ser off-topic. Agora, se andas na FCUL, que me lembre no ano passado eu não fiz 1 ou 2 dos 10 SELECTS que eles pediam (Sendo eles os últimos pedidos), e tive 15 no trabalho. Já não me lembro da matéria, muito menos dos selects, mas é só para informar que não precisas de fazer todos os que são pedidos. Share this post Link to post Share on other sites