DUVIDA SQL INICIANTE
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
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
SELECT foto.* FROM cliente LEFT JOIN foto ON cliente.idcli = foto.idcli WHERE cliente.Nome = [ô]Andre[ô]
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
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
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.
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.
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
brigadao
e no caso de eu usar as idcliente como chave estrangeira eu colocaria ela nas 2 tabelas como contadores e sem aceitar nulos?
obrigado!!
obrigado!!
é vivendo e aprendendo.
Poderia dizer a mim com mostrar essas fotos se o cliente tiver 7,8 ou 9 fotos?
Uma boa pergunta.
Poderia dizer a mim com mostrar essas fotos se o cliente tiver 7,8 ou 9 fotos?
Uma boa pergunta.
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.
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.
muito obrigado amigo...
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
obrigado
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.
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