• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

pedrotuga

duvida em query atraves de multiplos relacionamentos

4 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

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

0

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