Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

pedrotuga

duvida em query atraves de multiplos relacionamentos

Mensagens Recomendadas

pedrotuga    31
pedrotuga

ppl... se eu tiver uma bd com varias tabelas relacionadas em cadeia... tipo.. cuma cadeia longa de tabelas relacionadas da seguinte forma

A relaciona com B que relaciona com C que relaciona com D que relaciona com E

o query que quero fazer é do tipo


select A.nome, E.ano
from
(... esta parte confunde-me)
where
A.rel=B.rel=C.rel=D.rel=E.rel

como é? que tabelas preciso de incluir no WHERE?

thx

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
slbs@work    0
slbs@work

ppl... se eu tiver uma bd com varias tabelas relacionadas em cadeia... tipo.. cuma cadeia longa de tabelas relacionadas da seguinte forma

A relaciona com B que relaciona com C que relaciona com D que relaciona com E

o query que quero fazer é do tipo


select A.nome, E.ano
from
(... esta parte confunde-me)
where
A.rel=B.rel=C.rel=D.rel=E.rel

como é? que tabelas preciso de incluir no WHERE?

thx

ora à partida no  FROM precisa de incluir as tabelas que precisas ... neste caso ...        A,B,C,D,E

SELECT A.nome, E.ano 

FROM

      A,B,C,D,E       

WHERE

A.rel  = B.rel  & 

B.rel1= C.rel1 &

C.rel2= D.rel2 &

D.rel3= E.rel3

no where tens de colocar restrições de modo a eliminar linhas repetidas ... isto pk na realidade o que faz o FROM é gerar todas as combinações das tabelas que lá incluis  ...

se cada tabela tiver 3 campos a tabela " gerada pelo FROM" teria 5*3 ou seja 15 Campos ... desses campos so te interessam ( WHERE ) os que

A.rel  = B.rel  e 

B.rel1= C.rel1 e

C.rel2= D.rel2 e

D.rel3= E.rel3

e no fim ...

Selecionas --> SELECT -> A.nome e E.ano

... mas poderá existir um outro comando que te facilite a tarefa .... .. vou ter de meditar um pouco mais no assunto...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
teckV    1
teckV

para mim a melhor forma de relacionar tabelas é através de relações entre tabelas criadas no database server

se tivermos as relações e as chaves bem criadas e possivel criar relações interessantes com INNER JOINS, LEFT JOINS, etc

neste exemplo tenho 4 tabelas relacionadas

tabelas:

pd_contas_pedidos

pd_webconfig

pd_webconf_servidor

pd_servidores

Cada conta_pedido tem um webconfig e cada webconfig pode ter varios servidores...

sabendo apenas o ID do pedido é possivel ir a todas as tabelas e sacar apenas o nome do servidor na tabela mais afastada

ID pedido = 1

SELECT     pd_contas_pedidos.id_pedidos AS id_conta, pd_servidores.nome AS nome_servidor
FROM         pd_contas_pedidos INNER JOIN
                      pd_webconf_servidor ON pd_contas_pedidos.id_webconfig = pd_webconf_servidor.id_webconfig INNER JOIN
                      pd_webconfig ON pd_contas_pedidos.id_webconfig = pd_webconfig.id_webconfig AND 
                      pd_webconf_servidor.id_webconfig = pd_webconfig.id_webconfig INNER JOIN
                      pd_servidores ON pd_webconf_servidor.id_Servidor = pd_servidores.id_servidor
WHERE     (pd_contas_pedidos.id_pedidos = 1)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
pedrotuga

Epa... eu n uso muito o join.... costumo fazer as junções no where.

Mas basicamente é preciso ioncluir as mesmas condições de relacionamento.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade