antiblock
https://arwen2.global/
  • Chatbox

    Did you check out our Discord? https://discord.gg/FFdvMjk9xA
    You don't have permission to chat.
    Load More
Sign in to follow this  
ExoticC

SQL ajuda

2 posts in this topic

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
antiblock
diamwall

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this