Duvida SQL Cadastro

SQL Server

SQL

PostgreSQL

Modelagem

11/12/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
Daniel Santos

Daniel Santos

Curtidas 0

Respostas

Mariana Carvalho

Mariana Carvalho

11/12/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?
GOSTEI 0
Daniel Santos

Daniel Santos

11/12/2014

quantidade de pessoas de cada cidade
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

11/12/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


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

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

GOSTEI 0
Marisiana Battistella

Marisiana Battistella

11/12/2014

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.
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
GOSTEI 0
Marisiana Battistella

Marisiana Battistella

11/12/2014

Daniel, conseguistes encontrar a solução?
GOSTEI 0
POSTAR