Sql [resolvido]

Pessoal, pode ser uma consulta simples, porém não estou conseguindo :S

Vou dar um exmplo:

Tabela: Venda

IDVenda CodCliente 01 1 02 2 03 6 04 2 05 1 06 2 07 4 08 2 09 5 10 1

Gostaria de mostrar os clientes que mais compraram…

Desde já agradeço…

Essa query não é tão simples assim para um iniciante.
De qualquer forma, poste a estrutura das tabelas e a query que você fez até agora para darmos uma olhada.

Já que pediu, vou mandar a estrutura do banco que estou usando;

[code]//Criando tabela TBCliente
create table TBCliente
(
IDCliente integer not null AUTO_INCREMENT,
Nome varchar (50) not null,
Logradouro varchar (200) not null,
Bairro varchar (50) not null,
DataNasc date not null,
DataRegistro date not null,
Constraint PKIDCliente primary key (IDCliente)
) ENGINE=InnoDB;

//Crianto tabela TBFilme
create table TBFilme
(
IDFilme integer not null AUTO_INCREMENT,
Nome varchar (50) not null,
Descricao varchar(200) not null,
Genero varchar (50) not null,
Diretor varchar (50) not null,
AtoresPrincipais varchar (200) not null,
AnoLancamento integer not null,
Locado varchar (3) not null,
Constraint PKIDFilme primary key (IDFilme)
) ENGINE=InnoDB;

//Criando tabela TBFuncionario
create table TBFuncionario
(
IDFuncionario integer not null AUTO_INCREMENT,
Nome varchar (50) not null,
Logradouro varchar (200) not null,
Bairro varchar (50) not null,
DataNasc date not null,
DataContratacao date not null,
Constraint PKIDFuncrionario primary key (IDFuncionario)
) ENGINE=InnoDB;

//Criando tabela TBLocacao
create table TBLocacao
(
IDLocacao integer not null AUTO_INCREMENT,
CodCliente integer not null,
CodFuncionario integer not null,
DataLoca date not null,
DataDevo date not null,
Constraint PKIDLocacao primary key (IDLocacao),
Constraint FKCodCliente foreign key (CodCliente)
References TBCliente (IDCliente)
on delete no action

	on update cascade,
Constraint FKCodFuncionario foreign key (CodFuncionario)
	References TBFuncionario (IDFuncionario)
	on delete no action

	on update cascade

) ENGINE=InnoDB;

//Criando tabela TBFilmeLoca
create table TBFilmeloca
(
IDFilmeLoca integer not null AUTO_INCREMENT,
CodFilme integer not null,
CodLocacao integer not null,
Constraint FKCodFilme foreign key (CodFilme)
References TBFilme (IDFilme)
on delete no action

	on update cascade,
Constraint FKCodLocacao foreign key (CodLocacao)
	References TBLocacao (IDLocacao)
	on delete no action

	on update cascade,
Constraint PKIDFilmeLoca primary key (IDFilmeLoca)

) ENGINE=InnoDB;[/code]

Na tabelta TBFilmeLoca, onde está o código do filme, eu queria mostrar quais os filmes mais locados em um intervalo de tempo

SELECT f.CodFilme, x.Nome 
FROM TBFilmeloca as f 
                inner join TBFilme as x on f.CodFilme = x.IDFilme 
                inner join TBLocacao as l on f.CodLocacao = l.IDLocacao 
WHERE  month(l.DataLoca) = month('2010-07-20') 
having COUNT(f.CodFilme)>= 2; // essa linha eu adicionei apenas para teste, tentando selecionario os filme com mais de 1 locação, mas mesmo assim não deu certo :S

Obrigado pela resposta, e desculpa pelo tamanho do código :confused:

olhando somente a primeira postagem segue sugestão

select CodCliente, count(IDVenda) vendas
from …
group by CodCliente
order by desc vendas

Pessoal, consegui, obrigado pela ajuda de todos
Segue o código que deu certo:

select fl.CodFilme, f.Nome, count(fl.CodFilme) Locacoes 
from TBLocacao as l 
                       inner join TBFilmeloca as fl on l.IDLocacao = fl.CodLocacao 
                       inner join TBFilme as f on f.IDFilme = fl.CodFilme 
where month(l.DataLoca) = month('2010-07-20') 
group by CodFilme 
order by Locacoes Desc
limit 5; //limitando apenas os 5 mais locados