Array
(
)

Duvida SQL Cadastro

Daniel Santos
   - 11 dez 2014

Postado Um minuto atras
create table tb_clientes(
idcliente integer primary key,
nome varchar not null,
cpf varchar not null unique,
---o char(1) not null,
nascimento date not null,
idade integer not null,
rg varchar not null unique,
datacadastro date not null,
email varchar not null unique,
idendereco integer not null,
idtelefone integer not null
)

create table tb_enderecos(
idendereco integer primary key,
rua varchar not null,
numero integer ,
complemento varchar,
bairro varchar not null,
cep integer not null,
idcidade integer
)

create table tb_cidades(
idcidade integer primary key,
nome varchar not null,
uf char(2) not null
)

create table tb_estados(
uf char(2) primary key,
nome varchar
)

create table tb_telefones(
idtelefone integer primary key,
numero varchar not null,
tipo varchar
)

1-Gostaria de saber se esta "modelagem" está correta

2-Como faço a consulta da quantidade de pessoas por cidade

Mariana Carvalho
   - 11 dez 2014

Para modelagem vc teria que mostrar o Diagrama de entidade relacionamento.

Sobre o select, vc quer mostrar os dados ou numeros de dados cadastrados?

Daniel Santos
   - 11 dez 2014

quantidade de pessoas de cada cidade

Ronaldo Lanhellas
   - 17 dez 2014


Citação:
Postado Um minuto atras
create table tb_clientes(
idcliente integer primary key,
nome varchar not null,
cpf varchar not null unique,
---o char(1) not null,
nascimento date not null,
idade integer not null,
rg varchar not null unique,
datacadastro date not null,
email varchar not null unique,
idendereco integer not null,
idtelefone integer not null
)

create table tb_enderecos(
idendereco integer primary key,
rua varchar not null,
numero integer ,
complemento varchar,
bairro varchar not null,
cep integer not null,
idcidade integer
)

create table tb_cidades(
idcidade integer primary key,
nome varchar not null,
uf char(2) not null
)

create table tb_estados(
uf char(2) primary key,
nome varchar
)

create table tb_telefones(
idtelefone integer primary key,
numero varchar not null,
tipo varchar
)

1-Gostaria de saber se esta "modelagem" está correta

2-Como faço a consulta da quantidade de pessoas por cidade


Respondendo a sua segunda pergunta, você pode usar o GROUP BY em conjunto com o JOIN:

#Código

select ci.id, ci.nome, count(*) as quantidade_clientes from tb_clientes c join tb_enderecos e
on c.idendereco = e.idendereco 
join tb_cidades ci on e.idcidade = ci.idcidade
group by ci.id, ci.nome

Marisiana
   - 03 jan 2015

Sobre a modelagem, você apenas possibilitou o cadastro de uma pessoa física. Não acha que tem que permitir o cadastro de uma pessoa jurídica também?
Quanto ao select, o Ronaldo apresentou um exemplo, mas eu não recomendo o uso de count(*), é sempre melhor utilizar o nome do campo que será contado.
#Código

select ci.id, 
    ci.nome,
    count(c.idcliente) as quantidade_clientes
from tb_clientes c
join tb_enderecos e
on c.idendereco = e.idendereco 
join tb_cidades ci 
on e.idcidade = ci.idcidade
group by ci.id, 
      ci.nome

Marisiana
   - 02 fev 2015

Daniel, conseguistes encontrar a solução?