Ir para conteúdo

POWERED BY:

Arquivado

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

meirelles

[Resolvido] Dificuldade com Order By

Recommended Posts

Saudações,

 

Seguinte galera, tô com uma tabela de (membros) e uma tabela de (congregações), preciso fazer uma relação entre membros x congregações, daí eu criei uma tabela de junção que é a tabela (membro_congregação).

 

Pra trazer os dados referentes as tabelas acima fiz a seguinte query:

sql_x = "select count(membro_congregacao.id_membro) as membros_por_congregacao from "
sql_x = sql_x & "congregacao inner join membro_congregacao "
sql_x = sql_x & "on congregacao.id_congregacao=membro_congregacao.id_congregacao "
sql_x = sql_x & "where congregacao.id_congregacao =" & rs_geral("id_congregacao")

2 coisas que eu gostaria de resolver, a primeira é ordenar pelo numero maximo de membros por congregação, ou seja, quem tem mais membros vir listando primeiro, a segunda questão é: o meu inner join está dando pau quando eu quero trazer mais de um campo, quando eu quero trazer o nome da congreção dá erro.

 

Resumo: Tenho que saber quantos membros tem em cada congregação e ordenar pelas que tem mais membros. Então eu consegui saber quantos membros tem em cada igreja, mas não consegui ordenar pela que tem mais membros, vou colocar online pra vocês analisarem o funcionamento.

 

Veja o link

 

Se alguém puder me ajudar.

 

Desde já, obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado Ted K,

 

Concordo que é uma duvida de SQL, mas a implementação é ASP, os caras lá vão me mandar uma query e na hora de implementar no ASP vai $%#$%¨, tem como o post permanecer por aqui mesmo, sem contar que tem um erro de ASP que eu não sei do que se trata.

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo, pedido aceito hehe!

 

a primeira é ordenar pelo numero maximo de membros por congregação

como nas tabelas você faz essa comparação, tem o ID do membro que está na tabela membro e tem o ID do membro na tabela congregação?

poderia dizer os campos que tem em cada tabela?

 

o meu inner join está dando pau quando eu quero trazer mais de um campo

para mais de um campo use o group by

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo, pedido aceito hehe!

 

a primeira é ordenar pelo numero maximo de membros por congregação

como nas tabelas você faz essa comparação, tem o ID do membro que está na tabela membro e tem o ID do membro na tabela congregação?

poderia dizer os campos que tem em cada tabela?

 

o meu inner join está dando pau quando eu quero trazer mais de um campo

para mais de um campo use o group by

 

Estrutura de Tabelas

Tabela Membro

- id_membro

- nome

 

Tabela Congregacao

- id_congregacao

- nome

 

Tabela Membro_Congregacao

- id_membro

- id_congregacao

 

 

Quanto a segunda duvida, é quando eu quero trazer o valor total de membros e junto gostaria de trazer o nome da congregação na mesma query.

Compartilhar este post


Link para o post
Compartilhar em outros sites

seria tipo isso

 

select membro.nome, congregacao.nome from membro, congrecacao where congregacao.id_congregacao =" & rs_geral("id_congregacao") order by (select count(membro .id_membro) as conta from membro, Membro_Congregacao where membro.id_membro = Membro_Congregacao.d_membro) asc

 

 

eitha POG, veja se funfa, nem testei hehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Num rolou não cara.

 

A questão é a seguinte.

 

Tenho que saber quantos membros tem em cada congregação e ordenar pelas que tem mais membros. Então eu consegui saber quantos membros tem em cada igreja, mas não consegui ordenar pela que tem mais membros, vou colocar online pra vocês analisarem o funcionamento.

 

link

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz um select encadeado para cada um e depois compara os totais o qual for maior você pode montar uma SQL ordenando pelo maior.

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz um select encadeado para cada um e depois compara os totais o qual for maior você pode montar uma SQL ordenando pelo maior.

Infelizmente não possuo conhecimento para tal, caso tenha algum exemplo será de grande utilidade, desde já agradeço a ajuda!!!

 

Mas eu acho que entendi, eu preciso montar um select para obter a informação separada e depois montar outro select com subconsultas.

 

Seria isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

um simples exemplo seria mais ou menos assim, tb não testei, pois onde estou , não

tenho SQL

 

SELECT Nome As [nomecongregacao], Count(*) As [Nun_menbro]
FROM congregacao 
INNER JOIN menbro ON membro.id_membro = Congregacao.id_membro  
GROUP BY nomecongregacao where congregacao.id_congregacao =" & rs_geral("id_congregacao")ORDER BY Nun_menbro ASC

Compartilhar este post


Link para o post
Compartilhar em outros sites

um simples exemplo seria mais ou menos assim, tb não testei, pois onde estou , não

tenho SQL

 

SELECT Nome As [nomecongregacao], Count(*) As [Nun_menbro]
FROM congregacao 
INNER JOIN menbro ON membro.id_membro = Congregacao.id_membro  
GROUP BY nomecongregacao where congregacao.id_congregacao =" & rs_geral("id_congregacao")ORDER BY Nun_menbro ASC

Seguinte,

 

Dá uma olhada no link da aplicação e veja como tá funcionando, foi com essa query aqui:

sql_x = "select Count(x.id_membro) as TOT_MEMBROS from membro_congregacao x INNER JOIN membro m ON X.ID_MEMBRO=M.ID_MEMBRO where x.id_congregacao =" & rs_geral("id_congregacao")&" "
SQL_X = SQL_X & "AND "
SQL_X = SQL_X & "MONTH(M.DT_CADASTRO) = " & REQUEST("SLCT_MES")& " "
SQL_X = SQL_X & "ORDER BY Count(x.id_membro) DESC"

Sendo que meu order by num tá servindo de nada, ele não ordena pelo campo tot_membros.

 

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezados,

 

Continuo na busca pela ordenação!

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Meirelles, um feliz ano novo cheio de paz e melhor com Jesus!

 

Segue solução completa para seu caso na base SQL SERVER com Tabelas e inserts, selects e Resultados.

 

-- Estrutura Informada

 

Estrutura de Tabelas

Tabela Membro

- id_membro

- nome

 

Tabela Congregacao

- id_congregacao

- nome

 

Tabela Membro_Congregacao

- id_membro

- id_congregacao

 

-- Criação do banco

create database teste

go

 

-- Usando o banco

use teste

go

 

 

-- Criando as Tabelas

 

create table membro(

id_membro int identity(1,1),

nome varchar(100)

)

 

create table congregacao (

id_congregacao int identity(1,1),

nome varchar(100)

)

 

create table membro_congregacao (

id_membro int,

id_congregacao int

)

 

-- Insert Congregacao

 

insert into congregacao Values ('congragacao 01')

insert into congregacao Values ('congragacao 02')

insert into congregacao Values ('congragacao 03')

insert into congregacao Values ('congragacao 04')

insert into congregacao Values ('congragacao 05')

insert into congregacao Values ('congragacao 06')

 

-- Insert Membro

 

insert into membro Values ('membro 01')

insert into membro Values ('membro 02')

insert into membro Values ('membro 03')

insert into membro Values ('membro 04')

insert into membro Values ('membro 05')

insert into membro Values ('membro 06')

insert into membro Values ('membro 07')

insert into membro Values ('membro 08')

insert into membro Values ('membro 09')

insert into membro Values ('membro 10')

insert into membro Values ('membro 11')

insert into membro Values ('membro 12')

insert into membro Values ('membro 13')

insert into membro Values ('membro 14')

insert into membro Values ('membro 15')

insert into membro Values ('membro 16')

insert into membro Values ('membro 17')

insert into membro Values ('membro 18')

insert into membro Values ('membro 19')

insert into membro Values ('membro 20')

insert into membro Values ('membro 21')

insert into membro Values ('membro 22')

insert into membro Values ('membro 23')

insert into membro Values ('membro 24')

insert into membro Values ('membro 25')

insert into membro Values ('membro 26')

insert into membro Values ('membro 27')

insert into membro Values ('membro 28')

insert into membro Values ('membro 29')

insert into membro Values ('membro 30')

insert into membro Values ('membro 31')

insert into membro Values ('membro 32')

insert into membro Values ('membro 33')

insert into membro Values ('membro 34')

insert into membro Values ('membro 35')

insert into membro Values ('membro 36')

insert into membro Values ('membro 37')

insert into membro Values ('membro 38')

insert into membro Values ('membro 39')

insert into membro Values ('membro 40')

insert into membro Values ('membro 41')

insert into membro Values ('membro 42')

insert into membro Values ('membro 43')

insert into membro Values ('membro 44')

insert into membro Values ('membro 45')

insert into membro Values ('membro 46')

insert into membro Values ('membro 47')

insert into membro Values ('membro 48')

insert into membro Values ('membro 49')

insert into membro Values ('membro 50')

 

-- Insert Membro Congregacao

 

insert into membro_Congregacao Values (1,1)

insert into membro_Congregacao Values (2,1)

insert into membro_Congregacao Values (3,1)

insert into membro_Congregacao Values (4,2)

insert into membro_Congregacao Values (5,2)

insert into membro_Congregacao Values (6,2)

insert into membro_Congregacao Values (7,2)

insert into membro_Congregacao Values (8,2)

insert into membro_Congregacao Values (9,2)

insert into membro_Congregacao Values (10,2)

insert into membro_Congregacao Values (11,2)

insert into membro_Congregacao Values (12,2)

insert into membro_Congregacao Values (13,2)

insert into membro_Congregacao Values (14,2)

insert into membro_Congregacao Values (15,2)

insert into membro_Congregacao Values (16,3)

insert into membro_Congregacao Values (17,3)

insert into membro_Congregacao Values (18,3)

insert into membro_Congregacao Values (19,3)

insert into membro_Congregacao Values (20,3)

insert into membro_Congregacao Values (21,3)

insert into membro_Congregacao Values (22,3)

insert into membro_Congregacao Values (23,3)

insert into membro_Congregacao Values (24,3)

insert into membro_Congregacao Values (25,3)

insert into membro_Congregacao Values (26,3)

insert into membro_Congregacao Values (27,4)

insert into membro_Congregacao Values (28,4)

insert into membro_Congregacao Values (29,4)

insert into membro_Congregacao Values (30,4)

insert into membro_Congregacao Values (31,4)

insert into membro_Congregacao Values (32,4)

insert into membro_Congregacao Values (33,4)

insert into membro_Congregacao Values (34,4)

insert into membro_Congregacao Values (35,4)

insert into membro_Congregacao Values (36,4)

insert into membro_Congregacao Values (37,4)

insert into membro_Congregacao Values (38,4)

insert into membro_Congregacao Values (39,4)

insert into membro_Congregacao Values (40,4)

insert into membro_Congregacao Values (41,5)

insert into membro_Congregacao Values (42,5)

insert into membro_Congregacao Values (43,5)

insert into membro_Congregacao Values (44,5)

insert into membro_Congregacao Values (45,5)

insert into membro_Congregacao Values (46,5)

insert into membro_Congregacao Values (47,6)

insert into membro_Congregacao Values (48,6)

insert into membro_Congregacao Values (49,6)

insert into membro_Congregacao Values (50,6)

 

 

-- Totalizações para conferencia

 

Congrações - Numero de Membros

01 - 03

02 - 12

03 - 11

04 - 14

05 - 06

06 - 04

Total - 50

 

-- Select Com a Solução

SELECT COUNT(ID_MEMBRO) MEMBROS, B.NOME FROM MEMBRO_CONGREGACAO A

INNER JOIN CONGREGACAO B ON

A.ID_CONGREGACAO = B.ID_CONGREGACAO

GROUP BY A.ID_CONGREGACAO, B.NOME

ORDER BY COUNT(ID_MEMBRO)

 

-- Resultado

MEMBROS NOME

----------- ----------------------------------------------------------------------------------------------------

3 congragacao 01

4 congragacao 06

6 congragacao 05

11 congragacao 03

12 congragacao 02

14 congragacao 04

 

(6 row(s) affected)

 

 

Qualquer Duvida estou a disposição.

 

Abraços e Fique com Deus.

 

A paz.!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sendo que meu order by num tá servindo de nada, ele não ordena pelo campo tot_membros.

meirelles,

sugiro q tente isso:

na ultima linha:

SQL_X = SQL_X & "ORDER BY Count(x.id_membro) DESC"

troque

 

ORDER BY Count(x.id_membro)
por:

ORDER BY TOT_MEMBROS DESC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Meirelles, um feliz ano novo cheio de paz e melhor com Jesus!

 

Segue solução completa para seu caso na base SQL SERVER com Tabelas e inserts, selects e Resultados.

 

-- Estrutura Informada

 

Estrutura de Tabelas

Tabela Membro

- id_membro

- nome

 

Tabela Congregacao

- id_congregacao

- nome

 

Tabela Membro_Congregacao

- id_membro

- id_congregacao

 

-- Criação do banco

create database teste

go

 

-- Usando o banco

use teste

go

 

 

-- Criando as Tabelas

 

create table membro(

id_membro int identity(1,1),

nome varchar(100)

)

 

create table congregacao (

id_congregacao int identity(1,1),

nome varchar(100)

)

 

create table membro_congregacao (

id_membro int,

id_congregacao int

)

 

-- Insert Congregacao

 

insert into congregacao Values ('congragacao 01')

insert into congregacao Values ('congragacao 02')

insert into congregacao Values ('congragacao 03')

insert into congregacao Values ('congragacao 04')

insert into congregacao Values ('congragacao 05')

insert into congregacao Values ('congragacao 06')

 

-- Insert Membro

 

insert into membro Values ('membro 01')

insert into membro Values ('membro 02')

insert into membro Values ('membro 03')

insert into membro Values ('membro 04')

insert into membro Values ('membro 05')

insert into membro Values ('membro 06')

insert into membro Values ('membro 07')

insert into membro Values ('membro 08')

insert into membro Values ('membro 09')

insert into membro Values ('membro 10')

insert into membro Values ('membro 11')

insert into membro Values ('membro 12')

insert into membro Values ('membro 13')

insert into membro Values ('membro 14')

insert into membro Values ('membro 15')

insert into membro Values ('membro 16')

insert into membro Values ('membro 17')

insert into membro Values ('membro 18')

insert into membro Values ('membro 19')

insert into membro Values ('membro 20')

insert into membro Values ('membro 21')

insert into membro Values ('membro 22')

insert into membro Values ('membro 23')

insert into membro Values ('membro 24')

insert into membro Values ('membro 25')

insert into membro Values ('membro 26')

insert into membro Values ('membro 27')

insert into membro Values ('membro 28')

insert into membro Values ('membro 29')

insert into membro Values ('membro 30')

insert into membro Values ('membro 31')

insert into membro Values ('membro 32')

insert into membro Values ('membro 33')

insert into membro Values ('membro 34')

insert into membro Values ('membro 35')

insert into membro Values ('membro 36')

insert into membro Values ('membro 37')

insert into membro Values ('membro 38')

insert into membro Values ('membro 39')

insert into membro Values ('membro 40')

insert into membro Values ('membro 41')

insert into membro Values ('membro 42')

insert into membro Values ('membro 43')

insert into membro Values ('membro 44')

insert into membro Values ('membro 45')

insert into membro Values ('membro 46')

insert into membro Values ('membro 47')

insert into membro Values ('membro 48')

insert into membro Values ('membro 49')

insert into membro Values ('membro 50')

 

-- Insert Membro Congregacao

 

insert into membro_Congregacao Values (1,1)

insert into membro_Congregacao Values (2,1)

insert into membro_Congregacao Values (3,1)

insert into membro_Congregacao Values (4,2)

insert into membro_Congregacao Values (5,2)

insert into membro_Congregacao Values (6,2)

insert into membro_Congregacao Values (7,2)

insert into membro_Congregacao Values (8,2)

insert into membro_Congregacao Values (9,2)

insert into membro_Congregacao Values (10,2)

insert into membro_Congregacao Values (11,2)

insert into membro_Congregacao Values (12,2)

insert into membro_Congregacao Values (13,2)

insert into membro_Congregacao Values (14,2)

insert into membro_Congregacao Values (15,2)

insert into membro_Congregacao Values (16,3)

insert into membro_Congregacao Values (17,3)

insert into membro_Congregacao Values (18,3)

insert into membro_Congregacao Values (19,3)

insert into membro_Congregacao Values (20,3)

insert into membro_Congregacao Values (21,3)

insert into membro_Congregacao Values (22,3)

insert into membro_Congregacao Values (23,3)

insert into membro_Congregacao Values (24,3)

insert into membro_Congregacao Values (25,3)

insert into membro_Congregacao Values (26,3)

insert into membro_Congregacao Values (27,4)

insert into membro_Congregacao Values (28,4)

insert into membro_Congregacao Values (29,4)

insert into membro_Congregacao Values (30,4)

insert into membro_Congregacao Values (31,4)

insert into membro_Congregacao Values (32,4)

insert into membro_Congregacao Values (33,4)

insert into membro_Congregacao Values (34,4)

insert into membro_Congregacao Values (35,4)

insert into membro_Congregacao Values (36,4)

insert into membro_Congregacao Values (37,4)

insert into membro_Congregacao Values (38,4)

insert into membro_Congregacao Values (39,4)

insert into membro_Congregacao Values (40,4)

insert into membro_Congregacao Values (41,5)

insert into membro_Congregacao Values (42,5)

insert into membro_Congregacao Values (43,5)

insert into membro_Congregacao Values (44,5)

insert into membro_Congregacao Values (45,5)

insert into membro_Congregacao Values (46,5)

insert into membro_Congregacao Values (47,6)

insert into membro_Congregacao Values (48,6)

insert into membro_Congregacao Values (49,6)

insert into membro_Congregacao Values (50,6)

 

 

-- Totalizações para conferencia

 

Congrações - Numero de Membros

01 - 03

02 - 12

03 - 11

04 - 14

05 - 06

06 - 04

Total - 50

 

-- Select Com a Solução

SELECT COUNT(ID_MEMBRO) MEMBROS, B.NOME FROM MEMBRO_CONGREGACAO A

INNER JOIN CONGREGACAO B ON

A.ID_CONGREGACAO = B.ID_CONGREGACAO

GROUP BY A.ID_CONGREGACAO, B.NOME

ORDER BY COUNT(ID_MEMBRO)

 

-- Resultado

MEMBROS NOME

----------- ----------------------------------------------------------------------------------------------------

3 congragacao 01

4 congragacao 06

6 congragacao 05

11 congragacao 03

12 congragacao 02

14 congragacao 04

 

(6 row(s) affected)

 

 

Qualquer Duvida estou a disposição.

 

Abraços e Fique com Deus.

 

A paz.!

Muito obrigado, consegui adaptar a query, rodou bem aqui,

 

Vou passar a resolução do meu problema:

 

Eu tinha uma pequena query que passava o parametro "rs_geral("id_congregacao")", era essa pequena query no qual eu passava paramentro que eu abri o loop, ou seja, eu criei um while relativo a esse rscordset "rs_geral". Portanto nunca iria ordenar a query q tava dentro do while e sim pela query de fora do while.

 

Daí eu acabei com as duas querys e usei essa query no qual retorna todos os campos que eu precisava.

 

Consegui ordenar, muito obrigado, já já postarei o codigo completo.

 

Grande abraço.

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.