Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

::Porto

Como criar uma query em função da contagem do campo?

Recommended Posts

Pessoal, como resolver a seguinte situação:

 

Vamos supor as 2 tabelas:

 

------------------- LIVROS -----------------------ID	LIVRO	   EDICAO	 PAGINAS	EDITORA1	 livro01	 2a		 200		Atica2	 livro02	 3a		 320		Saraiva3	 livro03	 1a		 403		Saraiva---------------- CATEGORIA ---------------------IDP	 ID	CATEGORIA	 PRECO1	   2	  usado		55,002	   1	  novo		 45,003	   1	  novo		 50,004	   1	  usado		65,005	   3	  usado		40,006	   3	  novo		 40,007	   3	  novo		 50,008	   3	  usado		45,00
Como criar uma query que me forneça uma ordenação decrescente em função da contagem de IDs da tabela CATEGORIA, ou

seja, ordenando pela quantidade de livros em estoque. Utilizando as tabelas acima teríamos a seguinte classificação:

 

I) O ID 3 seria o primeiro pois contém 4 registros (livros).

II) O ID 1 seria o segundo pois contém 3 registros (livros).

III) O ID 2 seria o terceiro pois contém 1 registro (livro).

 

Daí a minha intenção seria MANTER ESSA ORDENAÇÃO DOS IDs para montar um looping com "mysql_fetch_array"

fornecendo dados tanto da tabela LIVROS como também da tabela CATEGORIA.

 

Alguém poderia ajudar? Obrigado. http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif

 

Obs.: Segue o código abaixo para criarem o banco de dados e inserirem os dados, facilitando para a realização de testes.

 

CREATE DATABASE `teste`;CREATE TABLE livros (  id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,  livro VARCHAR(255) NULL,  edicao VARCHAR(20) NULL,  paginas INTEGER UNSIGNED NULL,  editora VARCHAR(45) NULL,  PRIMARY KEY(id))  TYPE=MyISAM;CREATE TABLE categoria (  idp INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,  id INTEGER UNSIGNED NULL,  categoria VARCHAR(20) NULL,  preco INTEGER UNSIGNED NULL,  PRIMARY KEY(idp),  INDEX categoria_FKIndex1(id))  TYPE=MyISAM;INSERT INTO `livros` ( `id` , `livro` , `edicao` , `paginas` , `editora` )VALUES ('1', 'livro01', '2a', '200', 'Atica'), ('2', 'livro02', '3a', '320', 'Saraiva'), ('3', 'livro03', '1a', '403', 'Saraiva');INSERT INTO `categoria` ( `idp` , `id` , `categoria` , `preco` )VALUES ('1', '2', 'usado', '55'), ('2', '1', 'novo', '45'), ('3', '1', 'novo', '50'), ('4', '1', 'usado', '65'), ('5', '3', 'usado', '40'), ('6', '3', 'novo', '40'), ('7', '3', 'novo', '50'), ('8', '3', 'usado', '45');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, a questão foi resolvida e estou repassando a solução para interessados.

Obs.: o "case sensitive" foi o meu problema. Um abraço. http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif

"SELECT categoria.ID, PRECO, CATEGORIA, count(livros.ID) AS QUANTIDADE FROM livros, categoria WHERE categoria.ID = livros.ID GROUP BY(livros.ID) ORDER BY QUANTIDADE DESC"

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.