 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
renanbg Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012 Mensagens: 1158
|
Enviada: Qui Ago 17, 2017 9:28 am Assunto: [resolvido] SQL 3 tabelas |
|
|
Estou tentando montar essa SQL, mas achei alguns probleminhas...
Na tabela contas tenho esses campos
| Código: | | SELECT C.CODIGO, C.COD_AGENDAMENTO, C.COD_CONVENIO, C.STATUS, C.TOTAL |
Aí preciso trazer para a tela o NOME DO CONVENIO cujo campo correspondente é CODIGO na tabela CONVENIOS .
Em seguida trazer o NOME DO PACIENTE da tabela PACIENTES. O campo COD_PACIENTE, está na tabela AGENDA, que se liga com essa tabela pelo COD_AGENDAMENTO.
Preciso tbm da DATA, que tbm esta na AGENDA. O campo de ligação entre as tabelas é COD_AGENDAMENTO
É possivel fazer isso ou eu deveria já gravar DATA e COD_PACIENTE tbm nessa tabela?
Editado pela última vez por renanbg em Qui Ago 17, 2017 11:07 am, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
dinocesar Novato

Registrado: Segunda-Feira, 15 de Mai de 2017 Mensagens: 26
|
Enviada: Qui Ago 17, 2017 9:32 am Assunto: |
|
|
| Por favor, poste a estrutura completa das tabelas, para que fique mais facil o entendimento. Pode ser um print do DER (caso tenha). |
|
| Voltar ao Topo |
|
 |
leo_cj Colaborador

Registrado: Sábado, 26 de Março de 2011 Mensagens: 1335
|
Enviada: Qui Ago 17, 2017 9:38 am Assunto: |
|
|
É possível sim, supondo que temos as tabelas A, B, C e D
onde A possui os campos B_ID e C_ID
e C possui o campo D_ID
| Código: | SELECT A.Nome,
B.Nome,
C.Nome,
D.Nome
FROM A
INNER JOIN B
ON A.B_ID = B.ID
INNER JOIN C
ON A.C_ID = C.ID
INNER JOIN D
ON C.D_ID = D.ID |
|
|
| Voltar ao Topo |
|
 |
Mentow Novato


Registrado: Quarta-Feira, 15 de Fevereiro de 2017 Mensagens: 25 Localização: Macapá - AP
|
Enviada: Qui Ago 17, 2017 9:43 am Assunto: Re: SQL 3 tabelas |
|
|
| renanbg escreveu: | Estou tentando montar essa SQL, mas achei alguns probleminhas...
Na tabela contas tenho esses campos
| Código: | | SELECT C.CODIGO, C.COD_AGENDAMENTO, C.COD_CONVENIO, C.STATUS, C.TOTAL |
Aí preciso trazer para a tela o NOME DO CONVENIO cujo campo correspondente é CODIGO na tabela CONVENIOS .
Em seguida trazer o NOME DO PACIENTE da tabela PACIENTES. O campo COD_PACIENTE, está na tabela AGENDA, que se liga com essa tabela pelo COD_AGENDAMENTO.
Preciso tbm da DATA, que tbm esta na AGENDA. O campo de ligação entre as tabelas é COD_AGENDAMENTO
É possivel fazer isso ou eu deveria já gravar DATA e COD_PACIENTE tbm nessa tabela? |
| Código: |
SELECT A.CODIGO,
B.COD_PACIENTE,
C.DATA
FROM AGENDAMENTO A
LEFT JOIN TABELA_CONVENIOS B
ON B.CODIGO = A.ID_CONVENIO
LEFT JOIN TABELA_PACIENTES C
ON C.COD_PACIENTE = A.ID_PACIENTE_CONVENIO
|
Vai ficar mais ou menos assim, não testei, espero ter ajudado... _________________ if (Post.State = psResolvido) then
begin
Post.Caption := Post.Caption + ' [RESOLVIDO]';
end; |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Ago 17, 2017 10:05 am Assunto: |
|
|
Bom dia,
renanbg, pelo que entendi a query ficaria da seguinte forma:
| Código: | select
ct.Codigo,
ct.Cod_Agendamento,
ct.Cod_Convenio,
cv.Nome as Nome_Convenio,
ct.Status,
ct.Total,
pa.Nome as Nome_Paciente,
ag.Data as Data_Agendamento
from Contas as ct
inner join Convenios as cv
on cv.Codigo = ct.Cod_Convenio
inner join Agenda as ag
on ag.Cod_Agendamento = ct.Cod_Agendamento
inner join Pacientes as pa
on pa.Cod_Paciente = ag.Cod_Paciente |
Espero que ajude
_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-venda-guarulhos-residencial-casa |
|
| Voltar ao Topo |
|
 |
renanbg Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012 Mensagens: 1158
|
Enviada: Qui Ago 17, 2017 10:05 am Assunto: |
|
|
Opa, vamos lá.
Seria algo assim:
| Código: | SELECT C.CODIGO, C.STATUS, C.TOTAL,
A.DATA, A.HORA,
P.NOME,
D.CONVENIO
FROM CONTAS C
LEFT JOIN AGENDA A
ON A.CODIGO = C.COD_AGENDAMENTO
LEFT JOIN PACIENTES P
ON P.CODIGO = A.COD_PACIENTE
LEFT JOIN CONVENIOS D
ON D.CODIGO = C.COD_CONVENIO |
|
|
| Voltar ao Topo |
|
 |
renanbg Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012 Mensagens: 1158
|
Enviada: Qui Ago 17, 2017 10:09 am Assunto: |
|
|
| imex escreveu: | Bom dia,
renanbg, pelo que entendi a query ficaria da seguinte forma:
| Código: | select
ct.Codigo,
ct.Cod_Agendamento,
ct.Cod_Convenio,
cv.Nome as Nome_Convenio,
ct.Status,
ct.Total,
pa.Nome as Nome_Paciente,
ag.Data as Data_Agendamento
from Contas as ct
inner join Convenios as cv
on cv.Codigo = ct.Cod_Convenio
inner join Agenda as ag
on ag.Cod_Agendamento = ct.Cod_Agendamento
inner join Pacientes as pa
on pa.Cod_Paciente = ag.Cod_Paciente |
Espero que ajude
_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-venda-guarulhos-residencial-casa |
bom dia imex, postei logo depois de você.
A sua estrutura esta correta, apenas ajustei os nomes de acordo com minhas tabelas, ficando assim:
| Código: | select
ct.Codigo,
ct.Cod_Agendamento,
ct.Cod_Convenio,
cv.convenio as Nome_Convenio,
ct.Status,
ct.Total,
pa.Nome as Nome_Paciente,
ag.Data as Data_Agendamento
from Contas as ct
inner join Convenios as cv
on cv.Codigo = ct.Cod_Convenio
inner join Agenda as ag
on ag.Codigo = ct.Cod_Agendamento
inner join Pacientes as pa
on pa.Codigo = ag.Cod_Paciente |
Agora minha duvida é a seguinte:
Na tabela contas, tenho uma chave estrangeira ligada na tabela agenda.
Colocar essa SQL fixa lá não me atrapalharia em nada, caso eu delete algo da agenda?
Te pergunto porque usei o evento os cascate e no momento fiz a ligação mestre/detalhe entre as 2 tabelas. |
|
| Voltar ao Topo |
|
 |
dinocesar Novato

Registrado: Segunda-Feira, 15 de Mai de 2017 Mensagens: 26
|
Enviada: Qui Ago 17, 2017 10:14 am Assunto: |
|
|
Te mandei uma mp renan, dá uma olhada! _________________ Delphi + Oracle + MSSQL + MySQL + Forms & Report + Qlikview |
|
| Voltar ao Topo |
|
 |
renanbg Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012 Mensagens: 1158
|
Enviada: Qui Ago 17, 2017 10:17 am Assunto: |
|
|
Blz, obrigado pela força amigo.
Acredito que a estrutura esteja correta. Agora só preciso adaptar um where. |
|
| Voltar ao Topo |
|
 |
leo_cj Colaborador

Registrado: Sábado, 26 de Março de 2011 Mensagens: 1335
|
Enviada: Qui Ago 17, 2017 10:27 am Assunto: |
|
|
| Citação: | Na tabela contas, tenho uma chave estrangeira ligada na tabela agenda.
Colocar essa SQL fixa lá não me atrapalharia em nada, caso eu delete algo da agenda?
Te pergunto porque usei o evento os cascate e no momento fiz a ligação mestre/detalhe entre as 2 tabelas. |
Nesse caso, se for a tabela Agenda quem referencia a tabela de Contas, então o registro da tabela Contas também será apagado, senão, o registro continuará lá |
|
| Voltar ao Topo |
|
 |
renanbg Colaborador


Registrado: Quinta-Feira, 12 de Abril de 2012 Mensagens: 1158
|
Enviada: Qui Ago 17, 2017 11:03 am Assunto: |
|
|
Sim, tenho a tabela PRODUCAO E CONTAS que são detalhe da AGENDA, via COD_AGENDAMENTO.
Testei aqui e as exclusões estão funcionando bem.
Obrigado. |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|