DUVIDA SQL INICIANTE

MEGAMELO2 17/08/2013 19:17:40
#427690
boa noite pessoal.
Estou fazendo um sistema onde um cliente poderá ter varias fotos ou seja 2 tabelas, 1 para n
Fiz a tabela cliente
idcli int contador automatico
nome
endereco

fiz a tabela foto
idfoto int contador automatico
idcli int que faz o relacionamento com a tabela cliente
foto
data

gostaria de saber como posso fazer um select de forma que ele me apresente todas as fotos que estiverem
no nome andre por exemplo

obrigado
SAMUKA 17/08/2013 19:58:46
#427691
Resposta escolhida
SELECT foto.* FROM cliente LEFT JOIN foto ON cliente.idcli = foto.idcli WHERE cliente.Nome = [ô]Andre[ô]
MEGAMELO2 17/08/2013 20:33:40
#427700
agradeco muito amigo
deu certinho
mas eu usei como chave estrangeira o nome mesmo...

se adequa melhor a minha necessidade
o meu select ficou assim:
SELECT foto from fotos inner join clientes on fotos.idcli = clientes.idcli where clientes.nome = [ô]keyne[ô]
obrigado
SAMUKA 17/08/2013 21:33:07
#427701
O problema de se usar o nome como chave primaria é que no futuro podem surgir 2 pessoas com nomes iguais, daí fica começa a surgir complicações. Outra vantagem de você utilizar um campo autonumerado é que é do tipo long e ocupa pouco espaço, ao contrario de uma string de 50 caracteres. Além do fato, que o banco de dados irá indexar os valores e permitir pesquisas mais rápidas.

Outra coisa, sempre que possível utilize LEFT JOIN ou RIGHT JOIN no lugar do INNER JOIN. Em consultas mais complexas ele pode não retornar exatamente o que você está querendo.

Enfim, essas dicas estão relacionadas a boas praticas de estruturação de banco de dados.
Hoje, como o banco é pequeno, tudo funciona, mas com o tempo começam a aparecer problemas.
MEGAMELO2 17/08/2013 22:42:02
#427703
agradeço muito as suas dicas amigo, mas o problema e que não entendo direito a diferença entre os dois, por este motivo eu não saberia qual deles usar

brigadao


MEGAMELO2 17/08/2013 22:45:21
#427704
e no caso de eu usar as idcliente como chave estrangeira eu colocaria ela nas 2 tabelas como contadores e sem aceitar nulos?
obrigado!!
OMAR2011 18/08/2013 09:01:01
#427710
é vivendo e aprendendo.
Poderia dizer a mim com mostrar essas fotos se o cliente tiver 7,8 ou 9 fotos?
Uma boa pergunta.
SAMUKA 18/08/2013 09:13:28
#427711
MEGAMELO2, na chave primaria vc utiliza autonumeração, e na chave estrangeira, vc define esse campo como Numerico Long. Quando vc salvar um novo cliente, vc pega o numero gerado pela autonumeração e copia ele pra tabela foto. Na tabela cliente vc terá apenas um unico numero idcli enqto na tabela foto, vc poderá ter varios idcli.

OMAR2011, vc pode utilizar um sistema similar as paginas de internet, que tem album, mas apresentam uma foto por vez, e vc usa botões pra mover pra proxima ou anterior.
MEGAMELO2 18/08/2013 11:33:05
#427715
muito obrigado amigo...
MEGAMELO2 18/08/2013 11:42:06
#427716
valew mesmo cara , sou programador clipper estou tendo muitas dificuldades em me adaptar ao vb 2010 , voce conheceria alguma literatura que pudesse me ajudar ???
obrigado
SAMUKA 18/08/2013 17:39:19
#427722
MEGAMELO2, não conheço nenhum livro específico de VB.NET para programadores Clipper.

Se prepare pra uma dura empreitada, pois o clipper é uma linguagem procedural e VB.NET é orientada a objetos. Se já é difícil migrar de Clipper pra VB6 (orientado a eventos), é um pouco mais chato pra VB.NET ..... mas nada que não possa ser superado.

Estude a fundo o conceito de orientação a objeto, isso te ajudará a criar softwares melhores, menos bugados e melhores estruturados, facilitando quando for dar manutenção.
Tópico encerrado , respostas não são mais permitidas