RELACIONAMENTO, LER TABELAS

ESLEYSANCHES 12/01/2015 23:18:54
#443746
Olá a todos ...
Sei que isso é aula básica, mas me bateu um branco .
Tenho 2 tabelas relacionadas ... exemplo: tabela tbl_calendario e tbl_contatos. O relacionamento esta feito entre o campo ID da tbl_contatos com o campo idcontato da tabela tbl_calendario.
Porém na hora de puxar os dados da tabela agenda, não me interessa o IDUSUARIO e sim o nome dele (na tabela de contatos já existe o campo nome). Estou usando a instrução SQL abaixo para retornar o nome junto, está correto ou existe um jeito mais simples, não lembro de outros

SELECT tbl_contatos.nome, tbl_calendario.* FROM tbl_contatos, tbl_calendario WHERE tbl_contatos.id=tbl_calendario.idcontato


Ou se for um contato especifico definir o numero de ID do contato

SELECT tbl_contatos.nome, tbl_calendario.* FROM tbl_contatos, tbl_calendario WHERE tbl_contatos.id=6



Está correto ou ainda existe jeito mais fácil??


ABraços galera!
ACCIOLLY 13/01/2015 08:39:11
#443749
Você deve criar uma View. Dá uma olhada nos sites
www.w3schools.com/sql/sql_view.asp
www.devmedia.com.br/conceitos-e-criacao-da-view-views-no-sql-server-parte-1/22390
e tem bastante vídeos no youtube relacionados a isso como por exemplo:
www.youtube.com/watch?v=JkOBBrm_5ms

qualquer coisa estamos aí
TUNUSAT 13/01/2015 09:02:25
#443750
Resposta escolhida
ESLEYSANCHES,

Outro jeito seria:
SELECT CO.nome, CA.* 
FROM tbl_contatos CO
INNER JOIN tbl_calendario CA
ON CO.id=CA.idcontato


Você só tem que tomar cuidado para não fazer [Ô]Plano Cartesiano[Ô] (Cross Join) - acho que a sua segunda query faz (Tudo x [Ô]cód: 6[Ô]):

==========================================================
Mitos do SQL Server – Fazer junções via INNER JOIN é mais rápido que na cláusula WHERE ? (Parte I)
https://gustavomaiaaguiar.wordpress.com/2010/09/06/mitos-do-sql-server-%E2%80%93-fazer-juncoes-via-inner-join-e-mais-rapido-que-na-clausula-where-parte-i/
==========================================================
Produto Cartesiano e Query Optimizer
http://blogfabiano.com/2009/03/26/produto-cartesiano-e-query-optimizer/
==========================================================
ENTENDENDO OUTER JOINS SQL – PARTE 1 (PRODUTO CARTESIANO)
http://www.profissionaisti.com.br/2009/06/entendendo-outer-joins-sql-parte-1-produto-cartesiano/
==========================================================
Verdades e mitos sobre JOINs
http://imasters.com.br/artigo/24756/banco-de-dados/verdades-e-mitos-sobre-joins/
==========================================================
Introdução ao SQL/Junções
http://pt.wikiversity.org/wiki/Introdu%C3%A7%C3%A3o_ao_SQL/Jun%C3%A7%C3%B5es
==========================================================

Você pode medir a velocidade através do Microsoft SQL Manager Studio habilitando duas janelas a saber:
Dentro da aba [Ô]Consulta[Ô]:
- [Ô]Incluir Plano de Execução Real[Ô];
- [Ô]Incluir Estatísticas do Cliente[Ô];

E pode melhorar a velocidade fazendo estatísticas:

Veja mais em:
==========================================================
SQL Server: Melhorando a performance através das estatísticas
http://www.linhadecodigo.com.br/artigo/704/sql-server-melhorando-a-performance-atraves-das-estatisticas.aspx
==========================================================
Como e por que as estatísticas influenciam no desempenho do SQL Server? – Parte 01
http://imasters.com.br/banco-de-dados/sql-server/como-e-por-que-as-estatisticas-influenciam-no-desempenho-do-sql-server-parte-01/
==========================================================

[][ô]s,
Tunusat.
ESLEYSANCHES 13/01/2015 15:29:00
#443765
Citação:

:
ESLEYSANCHES,

Outro jeito seria:

SELECT CO.nome, CA.* 
FROM tbl_contatos CO
INNER JOIN tbl_calendario CA
ON CO.id=CA.idcontato


Você só tem que tomar cuidado para não fazer [Ô]Plano Cartesiano[Ô] (Cross Join) - acho que a sua segunda query faz (Tudo x [Ô]cód: 6[Ô]):

==========================================================
Mitos do SQL Server – Fazer junções via INNER JOIN é mais rápido que na cláusula WHERE ? (Parte I)
https://gustavomaiaaguiar.wordpress.com/2010/09/06/mitos-do-sql-server-%E2%80%93-fazer-juncoes-via-inner-join-e-mais-rapido-que-na-clausula-where-parte-i/
==========================================================
Produto Cartesiano e Query Optimizer
http://blogfabiano.com/2009/03/26/produto-cartesiano-e-query-optimizer/
==========================================================
ENTENDENDO OUTER JOINS SQL – PARTE 1 (PRODUTO CARTESIANO)
http://www.profissionaisti.com.br/2009/06/entendendo-outer-joins-sql-parte-1-produto-cartesiano/
==========================================================
Verdades e mitos sobre JOINs
http://imasters.com.br/artigo/24756/banco-de-dados/verdades-e-mitos-sobre-joins/
==========================================================
Introdução ao SQL/Junções
http://pt.wikiversity.org/wiki/Introdu%C3%A7%C3%A3o_ao_SQL/Jun%C3%A7%C3%B5es
==========================================================

Você pode medir a velocidade através do Microsoft SQL Manager Studio habilitando duas janelas a saber:
Dentro da aba [Ô]Consulta[Ô]:
- [Ô]Incluir Plano de Execução Real[Ô];
- [Ô]Incluir Estatísticas do Cliente[Ô];

E pode melhorar a velocidade fazendo estatísticas:

Veja mais em:
==========================================================
SQL Server: Melhorando a performance através das estatísticas
http://www.linhadecodigo.com.br/artigo/704/sql-server-melhorando-a-performance-atraves-das-estatisticas.aspx
==========================================================
Como e por que as estatísticas influenciam no desempenho do SQL Server? – Parte 01
http://imasters.com.br/banco-de-dados/sql-server/como-e-por-que-as-estatisticas-influenciam-no-desempenho-do-sql-server-parte-01/
==========================================================

[][ô]s,
Tunusat.



Puts, você tem razão, é o INNER JOIN. Que no caso do SQL é apenas JOIN pois ele mesmo autocompleta.
Vou utilizar o JOIN mesmo, por que já terá muitos critérios o WHERE e vai acabar confundindo. INNER JOIN!

Vlw a todos!
Tópico encerrado , respostas não são mais permitidas