Maravilha, Gerson : fico contente de ter sido útil e ter conseguido ajudar a 
te esclarecer as suas dúvidas....  Eu não tenho previsão de ministrar 
treinamento por enquanto, mas não deixe de usar as muitas e boas refs que vc 
recebeu nesta thread, e as dúvidas que forem pintando na medida do possível a 
gente tenta esclarecer...

 []s

  Chiappa

--- Em oracle_br@yahoogrupos.com.br, "gersonlima276" <gersonlim@...> escreveu
>
> 
> Boa tarde Chiappa e todos do grupo,
> 
> Com esta explicação entendi com certeza esta query, muito obrigado Chiappa 
> pela aula, muito bem explicado, agora sim entendi, aliás como faço para ter 
> mais aulas com você? rsrsrrsrs(tô brincando). Muito obrigado a todos pela 
> atenção, abraços a todos.
> 
> Gerson Lima.
> 
> 
> --- Em oracle_br@yahoogrupos.com.br, "J. Laurindo Chiappa" <jlchiappa@> 
> escreveu
> >
> >  Verdade verdadeiríssima, Miltão...
> >  
> >  Gerson, quando eu dava treinamentos de SQL eu sempre usava como técnica 
> > didática a esquematização dos comandos, ie, tentava "quebrar" em diversas 
> > sub-partes lógicas, sempre achei que é interessante para aprendizado, E 
> > colocando em linhas separadas cada sub-parte, cada seção.... No caso de um 
> > JOIN, o esqueletão seria :
> >  
> >  SELECT colunasqueeuqueroexibirvindasdetodasastabelas
> >    FROM listadastabelasaseremjuntadas
> >    condiçõesdechaveentreastabelas
> >    
> >  vamos pensar nas duas primeiras linhas/seções que são mais fáceis de 
> > entender - recheando de carne o esqueleto/substiuindo pelo seu exemplo, 
> > chegaríamos em :    
> >  
> > SELECT cd_paciente, nm_paciente, ds_endereco, cd_etnia, nm_etnia
> >   FROM paciente, etnia
> >   
> > ==> OU SEJA, eu olhei a tua lista de colunas de cada tabela e as 
> > copiei/colei no esqueleto, separadas por vírgulas, sim ?? NADA mais que 
> > isso... 
> > 
> >  Continuando, nem sempre é obrigatório mas é uma Excelente prática vc 
> > INDICAR no comando de qual tabela vem cada coluna, e a sintaxe para isso é 
> > separar o nome da tabela da respectiva coluna por um ponto, tipo :
> >  
> > SELECT paciente.cd_paciente, paciente.nm_paciente, paciente.ds_endereco, 
> > etnia.cd_etnia, etnia.nm_etnia
> >   FROM paciente, etnia
> >    
> >  => legal ?? Porém, apesar de funcionar/ser aceita, essa opção de vc 
> > colocar o nome completo da tabela na frente de cada coluna faz vc digitar 
> > DEMAIS, é trabalhosa.... Então a outra opção aceita e muito mais usada é vc 
> > dar um APELIDO para cada tabela na linha do FROM, e colocar na frente de 
> > cada coluna o APELIDO correspondente - vamos dar os apelidos de A e de B 
> > para cada tabela ?? Aí ficaria assim :
> > 
> > SELECT A.cd_paciente, A.nm_paciente, A.ds_endereco, B.cd_etnia, B.nm_etnia
> >   FROM paciente A, etnia B
> > 
> >   
> > => até aqui, tranquilo  ?? Tá vendo como o comando está se formando ??? 
> > Acompanhou até aqui ??
> > 
> >  Para finalizar, vamos colocar a linha/seção que indica a CONDIÇÃO em que 
> > os dados devem ser juntados/lidos em cada tabela : a idéia é, vc NÂO QUER 
> > que para cada linha de cada paciente apareçam TODAS as etnias, vc quer 
> > APENAS a descrição da etnia correntemente sendo lida para o paciente atual 
> > , e (imagino, pelo jeitão das suas tabelas) que a informação, a 
> > Identificação da etnia corrente está na coluna CD_ETNIA, então é ESSA a 
> > chave, a condição a ser observada : indicando isso, o executor de SQLs do 
> > banco de dados já sabe que quando vc estiver lendo um paciente com, 
> > digamos, CD_ETNIA=1, é a descrição da etnia 1, aquela aonde CD_ETNIA é 
> > igual a 1 na tabela de etnia que virá... Depois, continuando a execução do 
> > comando SQL, quando o banco de dados vc ler um paciente com CD_ETNIA=2, é a 
> > descrição da tabela etnia aonde CD_ETNIA=2 que será trazida.... OU SEJA, o 
> > que vc quer é trazer da tabela etnia a descrição da etnia que seja IGUAL, 
> > que tenha o mesmo código, que a etnia do paciente sendo lido, sim ????
> >   Há duas maneiras de vc indicar isso, uma é indicar com uma cláusula WHERE 
> > o que que tem que ser igual nas duas tabelas para a ligação entre elas :
> >   
> > SELECT A.cd_paciente, A.nm_paciente, A.ds_endereco, B.cd_etnia, B.nm_etnia
> >   FROM paciente A, etnia B
> >  WHERE A.cd_etnia = B.cd_etnia;
> > 
> > 
> > ==>> PRONTO !!! Executa isso e vc vai ter a sua resposta, sim ?? Muito 
> > difícil, ou deu pra acompanhar ??? 
> > 
> >  Esta forma que eu mostrei acima, aonde vc só indica o que que tem que ser 
> > igual nas duas tabelas, é a forma originalmente usada no dialeto SQL do 
> > banco de dados  Oracle.... 
> >   Há uma segunda forma, que é vc indicar a operação de join além de indicar 
> > a coluna-chave, ficaria tipo :
> >   
> > SELECT A.cd_paciente, A.nm_paciente, A.ds_endereco, B.cd_etnia, B.nm_etnia
> >   FROM paciente A join etnia B
> >     ON (A.cd_etnia = B.cd_etnia);
> >   
> >  ==> legal ??? Eu gosto mais da (e uso mais a) primeira forma , mas ambas 
> > funcionam, use aquela que gostar mais.... Espero que vc tenha captado a 
> > essência da coisa, e qquer dúvida, não hesite em nos mandar um copy/paste 
> > COMPLETO do que vc está tentando e das msgs que recebeu, BEM COMO uma 
> > descrição e uma explicação do que queria, que a gente discute em cima ...
> > 
> >  []s
> > 
> >    Chiappa
> > 
> > OBS IMPORTANTE : que fique Claro, o que mostrei acima é o caso mais simples 
> > de JOIN, em que sempre há uma linha de dados na tabela B para cada linha 
> > correspondente na tabela A, o chamado EQUI-JOIN - claro que há casos aonde 
> > isso não é verdadeiro, aí vc tem que usar OUTROS tipos de joins... Dá um 
> > look em http://dwhlaureate.blogspot.com.br/2012/08/joins-in-oracle.html , 
> > por exemplo, para um overview dos diversos tipos de joins....
> > 
> > --- Em oracle_br@yahoogrupos.com.br, "Milton Bastos Henriquis Jr." 
> > <miltonbastos@> escreveu
> > >
> > > Sem problema Gerson, estamos aqui pra ajudar....
> > > 
> > > Nesse caso vc precisa COPIAR e COLAR tudo que vc está fazendo.
> > > Se nao deu certo, cole aqui pra gente o comando que vc usou e o erro que 
> > > vc
> > > recebeu, senão fica difícil a gente adivinhar!
> > > 
> > > 
> > > 
> > > 
> > > 2013/7/12 gersonlima276 <gersonlim@>
> > > 
> > > > **
> > > >
> > > >
> > > >
> > > > Ola Milton,
> > > > eu li, mas quando faço aqui não da certo e eu não entendo direito a
> > > > estrura desta query, desculpa ficar perguntando algo tão simples para
> > > > vocês, mas não sei aonde estou errando.
> > > >
> > > >
> > > > --- Em oracle_br@yahoogrupos.com.br, "Milton Bastos Henriquis Jr."
> > > > <miltonbastos@> escreveu
> > > > >
> > > > > Gerson, vc já tinha perguntado isso em outro e-mail e nós já tínhamos
> > > > > respondido, com o código prontinho pra vc...
> > > > > Vc chegou a ler?
> > > > >
> > > > >
> > > > >
> > > > > 2013/7/12 gersonlima276 <gersonlim@>
> > > > >
> > > > > > **
> > > >
> > > > > >
> > > > > >
> > > > > > Bom dia a todos,
> > > > > >
> > > > > > eu estou lendo algumas apostila para aprender sql e junto fazendo
> > > > alguns
> > > > > > exercício para entender melhor, mas ainda não entendi sobre inner
> > > > join, eu
> > > > > > dei um select aqui na empresa em duas tabela e esta assim:
> > > > > >
> > > > > > select * from paciente
> > > > > >
> > > > > > cd_paciente (21213)
> > > > > > nm_paciente (Amaral Rodrigues)
> > > > > > ds_endereço (Rua Jacu Pessego)
> > > > > > cd_etnia (2)
> > > > > >
> > > > > > select * from etnia
> > > > > >
> > > > > > cd_etnia (2)
> > > > > > nm_etnia (AMANAYE)
> > > > > >
> > > > > > eu estou fazendo um select para trazer a descrição da etnia(AMANAYE)
> > > > > >
> > > > > > perdoe a minha ignorância mas alguém pode me explicar com faço?
> > > > > >
> > > > > > Um grande abraço a todos vocês.
> > > > > >
> > > > > >
> > > > > > --- Em oracle_br@yahoogrupos.com.br, Fabio Prado <fbifabio@> 
> > > > > > escreveu
> > > >
> > > > > > >
> > > > > > > Gerson,
> > > > > > >
> > > > > > > (e) e (p) são apelidos das tabelas
> > > > > > >
> > > > > > > é uma boa prática atribuir apelidos curtos para as tabelas e
> > > > referenciar
> > > > > > os
> > > > > > > nomes das colunas com o apelido na frente
> > > > > > >
> > > > > > > O exemplo que vc passou está incompleto. O correto seria como está
> > > > > > escrito
> > > > > > > abaixo:
> > > > > > >
> > > > > > > select e.name. p.valor as pagamento
> > > > > > > from empregados as e
> > > > > > > left join pagamentos p
> > > > > > > ...
> > > > > > >
> > > > > > > Aconselho vc a fazer um curso de SQL básico. Veja o do link abaixo
> > > > (não
> > > > > > sei
> > > > > > > se é bom, mas é gratuito):
> > > > > > >
> > > > > > >
> > > > > >
> > > > http://www.softblue.com.br/site/curso/id/3/CURSO+SQL+COMPLETO+BASICO+AO+AVANCADO+ON+LINE+BD03
> > > > > > >
> > > > > > > []s
> > > > > > >
> > > > > > > Fábio Prado
> > > > > > > www.fabioprado.net
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > 2013/7/11 gersonlima276 <gersonlim@>
> > > > > >
> > > > > > >
> > > > > > > > **
> > > > > > > >
> > > > > > > >
> > > > > > > > Ola mestre do Oracle,
> > > > > > > >
> > > > > > > > tira uma dúvida, no select abaixo eu preciso saber sobre o
> > > > significa a
> > > > > > > > letra (e)(p) na frente do name e do valor, como entender isto?
> > > > > > > >
> > > > > > > > select e.name. p.valor as pagamento
> > > > > > > > from empregados as left join pagamentos
> > > > > > > >
> > > > > > > > obrigado senhores!!!
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > --
> > > > > > > Fábio Prado
> > > > > > > www.fabioprado.net
> > > > > > > "Compartilhando conhecimentos e treinando profissionais em Bancos 
> > > > > > > de
> > > > > > Dados
> > > > > > > Oracle"
> > > > > > >
> > > > > > >
> > > > > > > [As partes desta mensagem que não continham texto foram removidas]
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > [As partes desta mensagem que não continham texto foram removidas]
> > > > >
> > > >
> > > >  
> > > >
> > > 
> > > 
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> >
>


Responder a