• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

seltix

ordenar resultado de pesquisa sql

12 mensagens neste tópico

boas a todos, entao a minha questao é a seguinte.

O que eu quero fazer é listar os blogs que tenho criados no meu site, até ai tudo bem. Depois quero substituir o idGestor de cada linha pelo pelo nome da pessoa correspondente, ate agora tudo bem, é so fasel uma query extre dentro do while.

Agora complica-se quando eu quero adicionar a possibilidade de ordenar a tabela pela coluna que quiser. não haveria problema se nao fosse a coluna idGestor porque a ordenação que deve ser feita nessa coluna é pelo nome do utilizador e nao pelo seu id, o que implica fazer uma sequencia de PESQUISA -> EDIÇÃO DE COLUNA idGestor -> REORDENAÇÃO...

será possivel??? ou estou a fazer uma má extrutura?  :bored:

obrigado a todos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

uiiiiii man.. não percebi nada!! LOL!!

:D

é melhor explicares isso melhor.. ou sou eu que estou a precisar de café!! LOL  :D

inté!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

uiiiiii man.. não percebi nada!! LOL!!

:D

é melhor explicares isso melhor.. ou sou eu que estou a precisar de café!! LOL  :P

inté!

entao é assim...

tenho a tabela blogs:

id

idGestor

titulo

descricao

...

para fazer um ORDER BY titulo (por exemplo) ta tudo ok nao ah problema.

mas se quiser fazer um ORDER BY idGestor ele ira tar a pôr por ordem os IDs de cada gestor do seu blog, mas nao é isso que eu quero, eu quero que ponha por ordem segundo o seu nome e nao segundo o seu ID.

o problema é que o nome dos gestores está na tabela UTILISADORES...

ou seja devia de aver uma especie de uniao de duas pesquisas antes de fazer o ORDER ou algo do genero...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vê lá se esta funciona:

SELECT * FROM blogs WHERE idGestor=(SELECT idGestor FROM utilizadores ORDER BY nomeGestor)

Em que o nomeGestor e idGestor são os campos que correspondem à tua tabela utilizadores.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vê lá se esta funciona:

SELECT * FROM blogs WHERE idGestor=(SELECT idGestor FROM utilizadores ORDER BY nomeGestor)

Em que o nomeGestor e idGestor são os campos que correspondem à tua tabela utilizadores.

uiiiii man.. que query maluca!! LOL!!


fazes o join das duas tabelas e assim já podes ordenar pelo nome 
algo deste género:

SELECT *
FROM blogs a INNER JOIN utilizadores b ON a.idGestor = b.idUtilizador
ORDER BY b.nome_gestor

estou a assumir que a tua tabela de utilizadores tem uma coluna de chave primária idUtilizador, e que a coluna idGestor tem uma FK para essa coluna. certo?

mui simples man :P

Inté!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

uiiiii man.. que query maluca!! LOL!!

Eu na altura de escrever isto, foi de cabeça mesmo, nem experimentei... SQL também não é o meu forte...  :P Mas não dá para resolver assim, por cada idGestor de ambas as tabelas, buscar o nome à dos utilizadores?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não sei bem o que pode sair da tua query.. mas boa coisa não deve ser :D

mas é tranquilo! eu não quiz tar a tripar.. foi só um comentário tranquilo :P

Peace! :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

uiiiii man.. que query maluca!! LOL!!


fazes o join das duas tabelas e assim já podes ordenar pelo nome 
algo deste género:

SELECT *
FROM blogs a INNER JOIN utilizadores b ON a.idGestor = b.idUtilizador
ORDER BY b.nome_gestor

estou a assumir que a tua tabela de utilizadores tem uma coluna de chave primária idUtilizador, e que a coluna idGestor tem uma FK para essa coluna. certo?

mui simples man :P

Inté!

brigadao é mesmo isso que precisava :D

apenas nao sera b.idUtilizador mas sim b.id apenas :)

brigadao vo ja testar =)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

epa to a executar a linha mas o idGestor ficam todos a valer 0:

SELECT * FROM bdp_blogs a INNER JOIN bdp_utilizadores b ON a.idGestor = b.nome ORDER BY b.nome

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

epa to a executar a linha mas o idGestor ficam todos a valer 0:

SELECT * FROM bdp_blogs a INNER JOIN bdp_utilizadores b ON a.idGestor = b.nome ORDER BY b.nome

e para testar fiz esta:

SELECT * FROM bdp_blogs INNER JOIN bdp_utilizadores ON bdp_blogs.refMascara = bdp_utilizadores.nome

e resulta em 0 registos :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bem agora queria adicionar mais uma coisa :)

tenho a sql :

SELECT a.*, b.nome, b.apelido FROM bdp_blogs a JOIN bdp_utilizadores b WHERE a.idGestor = b.id

e queria adicionar esta :

SELECT COUNT(*) FROM bdp_blogs_publicacoes WHERE idBlog=id

é possivel?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora