Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rogério Orlando

[Resolvido] Chamar registros de duas tabelas

Recommended Posts

Boa tarde pessoal.

 

trabalho com o mysql 4.014 e necessito fazer uma select que traga o registro individual de uma pessoa, que estão em uma tabela, e de outra tabela os dados que podem estar em vários registros.

 

Exemplo:

 

1- tenho uma tabela Amigos. Cada registro é único e tem 3 campos (rg/nomeamigo/datanasc).

2- tenho uma tabela filhos. podem existir vários registros para o mesmo amigo e ela

tem 4 campos (nomeamigo/nomef/datanascf/sexof). o campo "nomeamigo" é meu vínculo.

3- tenho uma tabela endereço. apenas 1 registro com x campos

 

Preciso que minha consulta retorne: NOMEAMIGO / nomef / datanascf / sexof / endereço

 

 

quando tento executar a select ela só me traz o primeiro registro que encontrou em cada tabela, ou seja, se tiver vários filhos só apresenta o primeiro.

 

TEM COMO FAZER?

gRATO.

 

select Amigos.*,filhos.*,endereço.* where amigos.nomeamigo=filhos.nomeamigo and amigos.nomeamigo=endereço.nomeamigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não guarda o endereço dos filhos, é isso?

E outra coisa, você devia usar um campo númerico como ID. Não uma string.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega, meu problema não está em como vincular dados (foi só um exemplo), e sim em recuperá-los, então...

 

Na tabela amigos tenho:

JOÃO / MARCIA / RENATO

 

Na tabela filhos tenho:

JOÃO - FILHO - MARCELO

JOÃO - FILHO - RICARDO

MARCIA - FILHO - SILVIA

RENATO - FILHO - ANA

RENATO - FILHO - MARA

RENATO - FILHO - ZECA

 

Na tabela endereço tenho:

JOÃO - RUA AMADOR

MARCIA - AV SÃO JOÃO

RENATO - RUA MARIO LOPES

 

PRECISO DE UMA SELECT QUE TRAGA:

 

amigo / endereço / filho1 / filho2

JOÃO / RUA AMADOR / MARCELO / RICARDO

 

 

Espero ter sido claro.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Trazer mais de um filho em uma linha de resultado no SELECT é possível, mas para cada filho você precisaria de um LEFT JOIN, cravado na query. Isso não é automático.

 

Para trazer um filho por linha, você poderia fazer com:

 

mysql> select a.nomeamigo, e.endereco, f.nomef
    ->   from amigos a
    ->     inner join filhos f
    ->       on f.nomeamigo = a.nomeamigo
    ->     inner join endereco e
    ->       on e.nomeamigo = f.nomeamigo;
+-----------+----------+---------+
| nomeamigo | endereco | nomef   |
+-----------+----------+---------+
| diogo     | rua b    | renato  | 
| diogo     | rua b    | tiago   | 
| felipe    | rua a    | marcelo | 
+-----------+----------+---------+
3 rows in set (0.00 sec)

Há também a possibilidade de trazer os filhos concatenados como um só campo, veja abaixo:

 

mysql> select a.nomeamigo, e.endereco, group_concat(f.nomef) filhos
    ->   from amigos a
    ->     inner join filhos f
    ->       on f.nomeamigo = a.nomeamigo
    ->     inner join endereco e
    ->       on e.nomeamigo = f.nomeamigo
    ->   group by a.nomeamigo;
+-----------+----------+--------------+
| nomeamigo | endereco | filhos       |
+-----------+----------+--------------+
| diogo     | rua b    | renato,tiago | 
| felipe    | rua a    | marcelo      | 
+-----------+----------+--------------+
2 rows in set (0.00 sec)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado, funcionou perfeitamente.

 

Meu problema agora é outro. Não consigo fazer meu programa em VB6 conectar-se ao banco de dados Mysql 5.0, o qual substitui pelo antigo (4.014).

 

Eu utilizava a string abaixo:

 

strConnect = "driver={MySQL}; server=" & mySqlIP & ";uid=" & usr_id & ";pwd=" & pass & ";database=" & meuBD & ""

 

Para conhecimento, antes o mysql estava em (c:\mysql) agora está em (C:\Arquivos de programas\MySQL\MySQL Server 5.0)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eclesiastes, resolvi o problema.

 

O Mysql 5.0 não é compatível com os conectores 2.50 ou 3.51, assim localizei, instalei e alterei minha string de conexão e deu tudo certo:

 

De: strConnect = "driver={MySQL}; server=" & mySqlIP & ";uid=" & usr_id & ";pwd=" & pass & ";database=" & meuBD & ""

 

Para: strConnect = "driver={MySQL ODBC 5.1 Driver}; server=" & mySqlIP & ";uid=" & usr_id & ";pwd=" & pass & ";database=" & meuBD & ""

 

valeu assim mesmo, espero ajudar alguem com esta postagem.

 

Um abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.