pedrotuga Posted April 4, 2006 at 10:43 AM Report #20852 Posted April 4, 2006 at 10:43 AM 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
slbs@work Posted April 4, 2006 at 01:16 PM Report #20879 Posted April 4, 2006 at 01:16 PM 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...
teckV Posted April 4, 2006 at 04:19 PM Report #20909 Posted April 4, 2006 at 04:19 PM 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)
pedrotuga Posted April 6, 2006 at 06:27 PM Author Report #21198 Posted April 6, 2006 at 06:27 PM Epa... eu n uso muito o join.... costumo fazer as junções no where. Mas basicamente é preciso ioncluir as mesmas condições de relacionamento.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now