Usuário com melhor resposta
Stored procedure com várias tabelas

Pergunta
-
Olá, alguém pode dar uma ajudinha?
Na StoredProcedure abaixo eu preciso que retorne:
com o nome do bairro da tabela Programa_AARH;
com o nome do bairro da tabela PF_Paciente;
com o nome do bairro da tabela PF_Proprietário.
Estas 3 tabelas contem a chave estrangeira cod_Endereco da tabela Endereco.
A tabela Endereco contem a chave estrangeira da tabela Area_Bai_Local, onde estão os bairros.
No código eu consegui que retorne apenas com o nome do bairro da tabela Programa_AARH.
ALTER PROCEDURE [dbo].[spEncerramento] @id AS INT AS BEGIN SELECT E.nome as "Paciente", A.data_Contato, E.data_Nasc as "DataNascPaciente", D.descricao as "Ocupacao", H.descricao as "Bairro", F.descricao as "LocaldoAcidente", B.nome as "Proprietario", C.sigla as "Sexo", B.data_Nasc as "DataNascProp", I.nome, J.descricao, K.descricao as "Raca", L.descricao as "Mamifero", A.Encaminhamento FROM Programa_AARH A, PF_Proprietario B, Adm_Sexo C, Adm_Ocupacao D, PF_Paciente E, Area_Local_Acidente F, Endereco G, Area_Bai_Local H, Animal_Companhia I, Adm_Observa_Raiva J, Adm_Animal_Comp_Raca K, Adm_Mamiferos L WHERE A.cod_proprietario = B.id and A.cod_Ocupacao = D.id and A.cod_Local_Meio = F.id and A.cod_Paciente = E.id and B.cod_Sexo = C.id and G.cod_Area_Loc = H.id and B.cod_Endereco = G.id and A.cod_Animal_Companhia = I.id and A.cod_Observacao = J.id and I.cod_Raca = K.id and A.cod_Mamifero = L.id and A.id = @id order by A.data_Contato asc; END
Respostas
-
Boa noite,
Wilson, experimente dessa forma:
SELECT E.nome as "Paciente", APAC.descricao as "BairroPaciente", A.data_Contato, E.data_Nasc as "DataNascPaciente", D.descricao as "Ocupacao", AAARH.descricao as "Bairro", F.descricao as "LocaldoAcidente", B.nome as "Proprietario", C.sigla as "Sexo", B.data_Nasc as "DataNascProp", APROP.descricao as "BairroProp", I.nome, J.descricao, K.descricao as "Raca", L.descricao as "Mamifero", A.Encaminhamento FROM Programa_AARH A INNER JOIN Adm_Ocupacao D ON D.id = A.cod_Ocupacao INNER JOIN Area_Local_Acidente F ON F.id = A.cod_Local_Meio INNER JOIN Animal_Companhia I ON I.id = A.cod_Animal_Companhia INNER JOIN Adm_Animal_Comp_Raca K ON K.id = I.cod_Raca INNER JOIN Adm_Observa_Raiva J ON J.id = A.cod_Observacao INNER JOIN Adm_Mamiferos L ON L.id = A.cod_Mamifero INNER JOIN Endereco EAARH ON EAARH.id = A.cod_Endereco INNER JOIN Area_Bai_Local AAARH ON AAARH.id = EAARH.cod_Area_Loc INNER JOIN PF_Proprietario B ON B.id = A.cod_proprietario INNER JOIN Adm_Sexo C ON C.id = B.cod_Sexo INNER JOIN Endereco EPROP ON EPROP.id = B.cod_Endereco INNER JOIN Area_Bai_Local APROP ON APROP.id = EPROP.cod_Area_Loc INNER JOIN PF_Paciente E ON E.id = A.cod_Paciente INNER JOIN Endereco EPAC ON EPAC.id = E.cod_Endereco INNER JOIN Area_Bai_Local APAC ON APAC.id = EPAC.cod_Area_Loc WHERE A.id = @id order by A.data_Contato asc;
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Wilson Boris sexta-feira, 20 de novembro de 2015 00:21
Todas as Respostas
-
-
Olá Wsti,
obrigado pelo retorno!
Interessante, eu não tenho usado o inner join, pois tenho utilizado o sinal de igualdade na cláusula where.
No teu ´where A.nome´ fala a operaçao de igualdade?
Vou precisar estudar esta diferença....
- Editado Wilson Boris quinta-feira, 19 de novembro de 2015 21:35 complemnto
-
Realmente wilson faltou o = .
Obrigado pela correção !
Quando tu usas o '=' a interpretação é de Join, Verifique suas suas Tabelas e a ligação delas. E bem possível que vc tenha que utilizar left e right joins nessa tua consulta.
Segue um link que vai te ajudar nos seus estudos.
http://www.devmedia.com.br/inner-cross-left-rigth-e-full-joins/21016
- Editado Wsti quinta-feira, 19 de novembro de 2015 22:16
-
-
Boa noite,
Wilson, experimente dessa forma:
SELECT E.nome as "Paciente", APAC.descricao as "BairroPaciente", A.data_Contato, E.data_Nasc as "DataNascPaciente", D.descricao as "Ocupacao", AAARH.descricao as "Bairro", F.descricao as "LocaldoAcidente", B.nome as "Proprietario", C.sigla as "Sexo", B.data_Nasc as "DataNascProp", APROP.descricao as "BairroProp", I.nome, J.descricao, K.descricao as "Raca", L.descricao as "Mamifero", A.Encaminhamento FROM Programa_AARH A INNER JOIN Adm_Ocupacao D ON D.id = A.cod_Ocupacao INNER JOIN Area_Local_Acidente F ON F.id = A.cod_Local_Meio INNER JOIN Animal_Companhia I ON I.id = A.cod_Animal_Companhia INNER JOIN Adm_Animal_Comp_Raca K ON K.id = I.cod_Raca INNER JOIN Adm_Observa_Raiva J ON J.id = A.cod_Observacao INNER JOIN Adm_Mamiferos L ON L.id = A.cod_Mamifero INNER JOIN Endereco EAARH ON EAARH.id = A.cod_Endereco INNER JOIN Area_Bai_Local AAARH ON AAARH.id = EAARH.cod_Area_Loc INNER JOIN PF_Proprietario B ON B.id = A.cod_proprietario INNER JOIN Adm_Sexo C ON C.id = B.cod_Sexo INNER JOIN Endereco EPROP ON EPROP.id = B.cod_Endereco INNER JOIN Area_Bai_Local APROP ON APROP.id = EPROP.cod_Area_Loc INNER JOIN PF_Paciente E ON E.id = A.cod_Paciente INNER JOIN Endereco EPAC ON EPAC.id = E.cod_Endereco INNER JOIN Area_Bai_Local APAC ON APAC.id = EPAC.cod_Area_Loc WHERE A.id = @id order by A.data_Contato asc;
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Wilson Boris sexta-feira, 20 de novembro de 2015 00:21
-