kikokairos
Membros-
Total de itens
4 -
Registro em
-
Última visita
Sobre kikokairos
- Data de Nascimento 12/02/1980
Perfil
-
Gender
Male
-
Location
Sousa, PB
kikokairos's Achievements
0
Reputação
-
Salve galera, Estou com dúvidas quanto a Herança... Primeiro: Usei a regra que faz uma relação para cada entidade. Ex: Material(Titulo, Ano, Edição) - Generalização Livro(ISBN, Autor, Editora) - Especialização Periodico(ISSN, Nro, Área) - Especialização Tudo ok, até então. Porém quando fui criar a tabela Item_Emprestados apareceu uma dúvida, veja: Item_Emprestados(ID_Item, Qtd, Data, ID_Aluno, Cod_Material) Como vocês podem ver, Cod_Material é uma chave estrangeira para as tabelas especializadas Livro e Periodico, porém isso não parece ser permitido. Minha pergunta então é: Como fazer para Cod_Material ser tanto do tipo ISBN(Livro) quanto ISSN(Periodico) ? Abaixo vou colocar meu códico: CREATE TABLE Material( Titulo VARCHAR(120) NOT NULL, Editora VARCHAR(50) NOT NULL, Ano INT NOT NULL ); CREATE TABLE Livro ( ISBN VARCHAR(13), Area VARCHAR(50) NOT NULL, Autor VARCHAR(50) NOT NULL, PRIMARY KEY (ISBN) ) inherits (Material); CREATE TABLE Periodico ( ISSN VARCHAR(10), Edicao VARCHAR(10) NOT NULL, Numero INT, PRIMARY KEY (ISSN) ) inherits (Material); CREATE TABLE Item_Empresta( COD_Item VARCHAR(10) , Quantidade INT NOT NULL, Grupo VARCHAR(50) , Data_Inicio DATE NOT NULL, Data_Devolucao DATE NOT NULL, CPF_Funcionario VARCHAR(14), Mat_Aluno VARCHAR(10), Mat_Bolsa VARCHAR(10), ID_Material VARCHAR(13) NOT NULL, PRIMARY KEY(COD_Item), CONSTRAINT Referencia_Empresta_Material FOREIGN KEY (ID_Material) REFERENCES Livro(ISBN) ON DELETE RESTRICT ON UPDATE CASCADE, FOREIGN KEY (ID_Material) REFERENCES Periodico(ISSN) ON DELETE RESTRICT ON UPDATE CASCADE ) Observe que do jeito que está meu código, se eu tentar inserir um material Periodico dá erro pois a primeira restrição é livro então ele informa que não há livro com tal Identificador.
-
Ok, ótimo! Era assim mesmo que eu queria. Eu também consegui fazer a mesma consulta assim: SELECT M.crm, M.nome, COUNT(T.telefone) AS Qtd_Telefones FROM Medico M, Telefone_Medico T WHERE M.crm=T.crm GROUP BY M.crm, M.nome Dá o mesmo resultado. Mas como seu exemplo foi diferente vou estudar o "inner join" para entender melhor. Acredito que o meu erro era agrupar apenas por uma coluna, já que alterei o meu código só no Group By, eu não estava obedecendo as quantidades de colunas. Vlw, obrigado Kakao me ajudou bastante.
-
Não deu certo, apresenta erro no "on" quando executo.
-
Olá pessoal, Preciso fazer uma consulta que recupere: O CRM, Nome e a quantidade de Telefones de cada médico. Para isso, eu tenho duas tabelas (medico e telefone_medico) Tentei realizar a consulta da seguinte forma: SELECT M.crm, M.nome COUNT(T.telefone) AS Total_Telefone FROM Medico M, Telefone_Medico T WHERE M.crm = T.crm GROUP BY M.crm Porém dá erro: syntax error at on near "(" Tentei de outras formas mas a única que saiu algo foi esta: SELECT T.crm, COUNT(*) AS Total_Telefone FROM Medico M, Telefone_Medico T WHERE M.crm = T.crm GROUP BY T.crm Porém tenho como retorno apenas o CRM, e a quantidade de Telefone agrupada por crm, mas não consigo obter o nome do médico. Qual o meu erro e como corrigir esta consulta?