
Problemas Com Querys
#1
Posted 26/02/2005, 11:02
Eu estou fazendo uma pesquisa em uma tabela X para me retornar o código (ID) de um campo, o resultado da pesquisa é o seguinte:
1
1
5
4
5
1
4
Ok, era bem isso q eu queria, porém não queria q os resultados fossem repetidos. Gostaria q o resultado da pesquisa fosse a seguinte:
1
5
4
Então, eu usei o DISTINCT na pesquisa do banco, e teria dado certo se ele não tivesse bagunçado a ordem com que eu pedi os resultados. O DISTINCT realmente tirou a repetição, mas tmb tirou a ordem com que eu pedi a pesquisa.
Bem, como eu faço pra manter a ordem da pesquisa e tirar as repetições??
PS: Desculpem se postei no lugar errado, mas não achei a seção correta.
#2
Posted 26/02/2005, 11:08
$consulta = mysql_query("SELECT distinct id FROM tabela ORDER by id ASC");
Se não for isso especifique melhor sua dúvida!

#3
Posted 26/02/2005, 11:18
$consulta = mysql_query ("SELECT DISTINCT Resposta.Topico_Cod_topico FROM Topico, Resposta WHERE Resposta.Topico_Cod_topico = Topico.Cod_topico ORDER BY Resposta.Cod_resposta DESC")
e as minhas tabelas:
+-----------+ | Topico | +-----------+ |Cod_topico | +-----------+ +-----------------+ | Resposta | +-----------------+ |Cod_resposta | |Topico_Cod_topico| +-----------------+
Se eu fizer essa mesma pesquisa sem o distinct ele retorna o seguinte resultado:
1 1 5 4 5 4
E eu gostaria q o resultado fosse, sem as reptições, mas q mantesse a mesma ordem:
1 5 4
Mas ai quando eu insiro o DISTINCT ele bagunça a ordem, e o resultado é:
4 5 1
Edição feita por: RMA, 26/02/2005, 13:17.
#5
Posted 26/02/2005, 11:27
$consulta = mysql_query ("SELECT DISTINCT Resposta.Topico_Cod_topico FROM Topico, Resposta WHERE Resposta.Topico_Cod_topico = Topico.Cod_topico ORDER BY Resposta.Cod_resposta DESC")
Você colocou desc, por isso que está 5 4 1... Coloque ASC no que ficará na ordem crescente:
$consulta = mysql_query ("SELECT DISTINCT Resposta.Topico_Cod_topico FROM Topico, Resposta WHERE Resposta.Topico_Cod_topico = Topico.Cod_topico ORDER BY Resposta.Cod_resposta ASC")
#6
Posted 26/02/2005, 11:37
Fórum +------------+----------+ | Cod_forum | Titulo | +------------+----------+ | 1 | forum 1 | +------------+----------+ | 2 | forum 2 | +------------+----------+ Topico +------------+-----------------+----------+ | Cod_topico | Forum_Cod_forum | Titulo | +------------+-----------------+----------+ | 1 | 1 | Tópico 1 | +------------+-----------------+----------+ | 2 | 1 | Tópico 2 | +------------+-----------------+----------+ | 3 | 2 | Tópico 3 | +------------+-----------------+----------+ Resposta +--------------+---------------------+--------------+ | Cod_Resposta | Topico_Cod_topico |Texto_resposta| +--------------+---------------------+--------------+ | 1 | 1 | Resposta 1 | +--------------+---------------------+--------------+ | 2 | 1 | Resposta 2 | +--------------+---------------------+--------------+ | 3 | 2 | Resposta 3 | +--------------+---------------------+--------------+ | 4 | 3 | Resposta 4 | +--------------+---------------------+--------------+ | 5 | 3 | Resposta 5 | +--------------+---------------------+--------------+
Traduzindo pra facilitar.
Eu possuo 2 Fóruns.
No fórum 1 eu tenho dois tópicos;
No fórum 2 eu tenho apenas um tópico.
Nos tópicos eu tenho:
3 respostas no tópico numero 1;
1 respostas no tópico 2;
E 2 respostas no tópico 3.
Agora, um pouco de álgebra relacional:
---------------
Sem reclamações...
Edição feita por: Justice, 26/02/2005, 14:54.
#7
Posted 26/02/2005, 13:20
Você colocou desc, por isso que está 5 4 1... Coloque ASC no que ficará na ordem crescente:
Desculpe, dei apenas um exemplo q acabou confundindo.
Reescrevendo:
Resultado sem DISTINCT
1 1 4 5 4 5 4
Resultado da forma como eu queria:
1 4 5
Resultado com DISTINCT
4 5 1
#8
Posted 26/02/2005, 13:35
#9
Posted 26/02/2005, 13:46
Então, coloque order by campo ASC que sairá na ordem que você quer.
Veja bem, acabei de fazer um teste e vi o que está acontecendo:
Eu tenho a seguinte sequencia:
1 1 5 4 4 3
Porém eu não quero repetições, e quero q seja assim:
1 5 4 3
Mas quando eu uso o DISTINCT ele já organiza esses resultados na forma Crescente (ASC):
1 3 4 5
Mas eu não quero isso, quero q ele pegue a ordem q esta no banco, e só tire as repetições, não quero q ele re-organize a sequência numérica.
Então, DarK ThaleS, se eu usar o DESC ou o ASC não importa, pois a ordem q eu quero não é uma sequência lógica.
Se eu usar o DESC ele vai me trazer a sequencia: 5 4 3 1
Se eu usar o ASC ele vai me trazer a sequencia: 1 3 4 5
Mas eu quero a Sequencia: 1 5 4 3
Deu pra entender agora???
#10
Posted 26/02/2005, 13:56

$consulta = mysql_query ("SELECT DISTINCT Resposta.Topico_Cod_topico FROM Topico, Resposta WHERE Resposta.Topico_Cod_topico = Topico.Cod_topico")
#11
Posted 26/02/2005, 14:09
A lógica da sua query está certa, mas por acuas do Distinct não da certo.
#12
Posted 26/02/2005, 15:08
Que propriedades tem os campos?
Como está imprimindos os valores da consulta?
[]'s
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)