Estou aprendendo o básico do banco de dados agora e peguei uns exercicios de consulta, e me deparei com uma que está me dando dificuldade.
Esse é o diagrama que estou usando
E a minha duvida é como apresentar quantos clientes estão cadastrados em cada Loja, classificando o resultado por localização geográfica (estado, cidade, bairro)
Gostaria de não só solucionassem o problema, mas também me explicassem o porque de ser feito da forma mostrada, porque eu to tentando aprender mesmo pessoal, agradeço!!!
Tá com dúvida como formular a query?
Sim, exatamente isso @Felipe_Miranda
Você deve utilizar junções para obter o resultado das 3 tabelas que você almeja, você tem conhecimento em JOINS em SQL? sabe conceitos de chave primaria, chave estrangeira?
Eu aprendi fazer Join esses dias dando uma pesquisada a respeito, sei que ele liga as tabelas através da chave primaria de uma que precisa ser chave estrangeira na outra pra poder fazer a ligação, mas não sei nada a fundo.
Bom vamos aos poucos,
#Cliente
note que a tabela cliente, possui uma chave primaria chamada de cod_cliente,
e essa mesma tabela possui a chave estrangeira (chave para acessar outra tabela)
de loja, o nome do campo é cod_loja e encontra-se em cliente.
#Loja
por sua vez essa tabela possui apenas a chave primaria, chamada de cod_loja
então quem possui acesso a tabela loja é cliente, por um relacionamento unidirecional, diante mão adianto que o banco esta mal modelado.
sua query ficaria algo em torno disso:
SELECT COUNT(*) from cliente INNER JOIN loja on cliente.cod_loja = loja.cod_loja
WHERE loja.uf = “são paulo” AND loja.bairro = “bairro tal” AND loja.municipio = "cidade tal"
ORDER BY loja.cod_loja;
É fácil de aprender, existem quatro tipos de joins, INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN, da uma pesquisada sobre isso…
Sua explicação esclareceu bastante coisa, valeu mesmo, vou dar uma pesquisada melhor sobre os outros tipos de Join…
Só mais uma coisa, tem como eu mostrar quantos clientes cadastrados tem em cada loja com uma só Query?
Tô tentando fazer aqui, mas não to conseguindo de jeito nenhum!
Sim kaio é possível, você deseja projeta tudo isso em um resultado só?
mas leva um pouco mais de trabalho, temos que usar union, having, ou ir por outras abordagens,
por gatilho, procidures…antes de chegar a isso, qual a razão para esse resultado? um relatório?
Kaio,
Caso possa lhe ajudar, segue um material para visualizar a funcionalidade dos Joins: http://goo.gl/wHPw69
Então Kaio, você pode user o group by para saber esse resultado agrupado por loja.
SELECT loja.nome_loja, COUNT(*) AS Quant
FROM cliente
INNER JOIN loja ON cliente.cod_loja = loja.cod_loja
WHERE loja.uf = 'são paulo’
AND loja.bairro = 'bairro tal’
AND loja.municipio = 'cidade tal’
GROUP BY loja.nome_loja
ORDER BY loja.cod_loja;
Estou tentando fazer o DER desse caso abaixo. Alguém pode me ajudar???
Criar uma estrutura em banco de dados para um aplicativo de serviços onde os usuários possam solicitar e agendar um serviço com um prestador.
Cada Prestador cadastrado no aplicativo poderá cadastrar os dias e horários que irão trabalhar.
Cada cliente que logar no app poderão consultar os prestadores próximos a ele exibindo a distância de cada um.
Ao selecionar um prestador deverá apresentar os dias que o mesmo disponibilizou para atendimento e então realizar a solicitação de agendamento
Cada prestador recebe as solicitações de agendamento por meio de status sendo o inicial pendente > agendado > finalizado.
O prestador poderá também recusar a solicitação de agendamento. Ao recusar o sistema deve colocar no status recusado é obrigatório o preenchimento de uma justificativa do prestador.
O sistema deverá também armazenar fotos dos serviços realizados assim como dar uma nota em estrelas (0 a 5) sendo como obrigatório a nota…
Cada prestador poderá armazenar até 3 tipos de serviços prestados: exemplos: limpeza de ar-condicionado, manicure, faxina.