Jump to content


Photo

Selecionar Do Sql Sem Repetir

PHP Mysql Selecionar Diferente Repetidos Dados

  • Faça o login para participar
15 replies to this topic

#1 Hospedar-se .Com

Hospedar-se .Com

    Super Veterano

  • Usuários
  • 1500 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 20/08/2005, 17:38

Existe alguma função no Mysql que selecione os dados sem repetir?

Tenho uma tabela com 105 dados, preciso selecionar sem repetir, ou seja, no resultado deverá mostrar apenas 13 dados (tirando todos os repetidos) ...

Dá pra fazer isso? Se sim, por favor, manda o código sql ... ou php ...



#2 MarcoviZ

MarcoviZ

    ubuntu for human being

  • Usuários
  • 1137 posts
  • Sexo:Não informado

Posted 20/08/2005, 17:43

como assim repetidos?tipo:

joao
maria
pedro
joao
felipe

ai aparece
joao
maria
pedro
felipe

isso que vc quer dizer?
[]'s

#3 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 20/08/2005, 17:48

$sql = mysql_query ("SELECT * FROM tabela LIMIT 13") or die(mysql_error());

Deve ser isto o que vc quer


Falopa!

#4 Hospedar-se .Com

Hospedar-se .Com

    Super Veterano

  • Usuários
  • 1500 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 20/08/2005, 17:51

não ... os resultados estão todos bagunçados ...

por exemplo:

1
5
5
5
5
5
5
8
3
2
2
2
2
2
3
3
3
3
3
4
5
4
4
...

E assim vai ....

Depois que selecionar, ele teria que mostrar sem repetir nenhum, ou seja:
1
2
3
4
5
8

#5 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 20/08/2005, 17:53

2 formas:

Vamos supor que o campo o qual você queira exibir seja cidade da tabela de fornecedores, sem repetições...

select distinct cidade from fornecedores

a outra forma

select cidade from fornecedores group by cidade
------
Mero mortal!

#6 Hospedar-se .Com

Hospedar-se .Com

    Super Veterano

  • Usuários
  • 1500 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 20/08/2005, 17:56

e da pra usar o like %SEILA% com o distinct ?

#7 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 20/08/2005, 17:58

Assim:

SELECT DISTINCT cidade FROM fornecedores WHERE cidade LIKE '%palavra%'

[]'s
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#8 Hospedar-se .Com

Hospedar-se .Com

    Super Veterano

  • Usuários
  • 1500 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 20/08/2005, 18:08

Poxa ... to quase desistindo ... não é bem php que to programando ... mas sei la ... ou ele seleciona tudo ou ele seleciona apenas 1 tabela ...


Meu código

#### Conecta no SQL e pega todos os meses (DIA/MES/ANO) ...
$dbh = DBI->connect("DBI:mysql:$database:$host","$username","$password");
$sth=$dbh->prepare("SELECT abertura FROM dominios");
$sth->execute;

#### Coloca tudo em @assinaturas
while (@assinaturas=$sth->fetchrow_array) {
($abertura) = (@assinaturas);


### Separa somente o mes e ano (MES/ANO)
($da,$ma,$aa) = split(/\//, $abertura);
$abmes="$ma/$aa"; # É a mesma coisa que MES/ANO

# Conecta novamente mas selecionando somente onde contiver MES/ANO
$dbh = DBI->connect("DBI:mysql:$database:$host","$username","$password");
$sth=$dbh->prepare("SELECT DISTINCT abertura FROM dominios WHERE abertura LIKE '%$abmes%'");
$sth->execute;

while (@monts=$sth->fetchrow_array) {
($mon) = (@monts);
 
 
 # Adiciona os resultados em num array sem repetir, mas não funciona, ou ele grava só 1 resultado ou ele grava tudo ...
 $total = push(@meses,"$mon");
 
}

######### Aqui iria o código para gerar os gráficos com as estatísticas ...

}[/CODE]

Sei que não tem nada a ver com php ... mas ambos usam SQL ... só não sei por que não quer funcionar ....

Tem algo de errado no SQL ? Ou na minha lógica?

#9 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 20/08/2005, 18:13

A instrução LIKE apenas funciona para campos com formato de texto, ou seja, CHAR, VARCHAR, MEMO, ...

No caso, este campo ABERTURA, é de que tipo?
------
Mero mortal!

#10 Hospedar-se .Com

Hospedar-se .Com

    Super Veterano

  • Usuários
  • 1500 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 20/08/2005, 18:15

Numero, está no formato DIA/MES/ANO ...

Mesmo com ou sem like ele seleciona apenas 1 resultado ou as vezes pega todos ...

#11 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 20/08/2005, 18:17

Formato número ou data? Tipo, digo o tipo de campo, fisicamente... exemplo:
VARCHAR, DATE, TIMESTAMP, CHAR, INT, FLOAT, ...

Tente assim:

SELECT DISTINCT abertura FROM dominios WHERE format_date('%m',abertura) = '$abmes%'

ps.: não tenho certeza se a função é format_date ou date_format.
------
Mero mortal!

#12 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 20/08/2005, 18:27

O correto e DATE_FORMAT() :D


Falopa!

#13 Hospedar-se .Com

Hospedar-se .Com

    Super Veterano

  • Usuários
  • 1500 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 20/08/2005, 18:29

hehe valeu pela ajuda ... mas era meu código que tava doidão ...

Esse é o certo (VERMELHO = NÃO ERA PRA TER / AZUL = TEM QUE TER OU SER MUDADO):




#### Conecta no SQL e pega todos os meses (DIA/MES/ANO) ...
$dbh = DBI->connect("DBI:mysql:$database:$host","$username","$password");
$sth=$dbh->prepare("SELECT abertura FROM dominios");
$sth->execute;

#### Coloca tudo em @assinaturas
while (@assinaturas=$sth->fetchrow_array) {
($abertura) = (@assinaturas);


### Separa somente o mes e ano (MES/ANO)
($da,$ma,$aa) = split(/\//, $abertura);
$abmes="$ma/$aa"; # É a mesma coisa que MES/ANO

# Conecta novamente mas selecionando somente onde contiver MES/ANO
$dbh0 = DBI->connect("DBI:mysql:$database:$host","$username","$password");
$sth0=$dbh0->prepare("SELECT DISTINCT abertura FROM dominios WHERE abertura LIKE '%$abmes%'");
$sth0->execute;

while (@monts=$sth->fetchrow_array) {
($mon) = (@monts);


# Adiciona os resultados em num array sem repetir, mas não funciona, ou ele grava só 1 resultado ou ele grava tudo ...
$total = push(@meses,"$mon");

}

######### Aqui iria o código para gerar os gráficos com as estatísticas ...

}


Tava com a cabeça tão quente que esqueci de mudar as variáveis (Estavam se repetindo ... por isso colocava somente 1 resultado no array), e o While na segunda conexão ... que estava novamente anulando a parte de cima e refazendo o comando tudo de novo ...

#14 LucasMS

LucasMS

    Super Veterano

  • Usuários
  • 2076 posts
  • Sexo:Não informado

Posted 20/08/2005, 19:31

porque não faz assim:
cria um array vazio antes do while. ai dentro do while vc poe os resultados, mas verifica antes com o in_array se já tem esse elemento. se tiver, nao poe.

#15 Hospedar-se .Com

Hospedar-se .Com

    Super Veterano

  • Usuários
  • 1500 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 20/08/2005, 20:02

como assim o "in_array" ?





Veja alguns posts relacionados com: PHP, Mysql, Selecionar, Diferente, Repetidos, Dados

0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq