Selectare inregistrari distincte din DB

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

phpweb
Senior Member
Mesaje: 210
Membru din: Mar Mar 29, 2005 8:23 am
Contact:

Selectare inregistrari distincte din DB

Mesajde phpweb » Mar Noi 22, 2005 11:28 am

Am urmatoarea problema : cum fac o selectie din baza de date printr-o singura interogare astfel incat rezultatele sa fie distincte una cate una ? Prin doua interogari am rezolvat problema dar nu-mi place solutia.

Este vorba despre un mic motor de cautare care inregistreaza ultimele cautari in baza de date, fiecare cuvant fiind o inregistrare (chiar daca se faca cautarea dupa mai multi termeni).
Vreau sa stiu ce cuvinte au fost cautate si nu-mi surade deloc ideea sa mi se afiseze de mai multe ori acelasi cuvant ci doar rezultate distincte.

Multumesc anticipat !



Avatar utilizator
kknaru
Senior Member
Mesaje: 435
Membru din: Mie Dec 10, 2003 8:00 am

Re: Selectare inregistrari distincte din DB

Mesajde kknaru » Mar Noi 22, 2005 1:21 pm


Avatar utilizator
Tudy
Senior Member
Mesaje: 506
Membru din: Mie Sep 22, 2004 7:00 pm
Localitate: Cluj-Napoca

Mesajde Tudy » Mar Noi 22, 2005 2:55 pm

Cum?
E foarte explicit...

Intr-o baza de date are mai multe cuvinte (sau ce-or fi). Dar exista acelasi cuvant pe mai multe randuri din db.

Si doreste sa nu afiseze aceleasi cuv de mai multe ori.

Ex :
daca ai in db :

mama
tata
papuc
mama
sora
tata
tata
tata
php

El va afisa :

mama
tata
papuc
sora
php

Destul de explicit ?

Avatar utilizator
Tudy
Senior Member
Mesaje: 506
Membru din: Mie Sep 22, 2004 7:00 pm
Localitate: Cluj-Napoca

Mesajde Tudy » Mar Noi 22, 2005 3:03 pm

Bun...
O idee ar fi :

Iti mai creezi un array. acolo scrii numele pe masura ce le iei din bd.
Pentru fiecare nume luat din bd, verifici daca se afla in acel array... Daca se afla, nu il scrii. Altfel il scrii.

Poate iti fac si codul imediat :D

Sergiu
Average Member
Mesaje: 93
Membru din: Mie Dec 29, 2004 4:49 pm

Mesajde Sergiu » Mar Noi 22, 2005 4:30 pm

Nu stiu in MySql exista asa ce va sau nu dar in Fierber exista asa o functie distinct
Adica ex : [php]select distinct t.name from tb_table t[/php]
Ca returneaza o singura data inregistrarile care se repeta

Avatar utilizator
Tudy
Senior Member
Mesaje: 506
Membru din: Mie Sep 22, 2004 7:00 pm
Localitate: Cluj-Napoca

Mesajde Tudy » Mar Noi 22, 2005 4:56 pm

Da, ai dreptate.
E super simplu.

[php]
<?php
mysql_connect("localhost","user","pass");
mysql_select_db("database");
$sql = mysql_query("SELECT DISTINCT * FROM cautari");
while ($r = mysql_fetch_array($sql)) {
echo "$r[0]<br/>";
}
mysql_close();
?>
[/php]

phpweb
Senior Member
Mesaje: 210
Membru din: Mar Mar 29, 2005 8:23 am
Contact:

Mesajde phpweb » Mie Noi 23, 2005 10:05 am


Avatar utilizator
Tudy
Senior Member
Mesaje: 506
Membru din: Mie Sep 22, 2004 7:00 pm
Localitate: Cluj-Napoca

Mesajde Tudy » Mie Noi 23, 2005 11:40 am


Sergiu
Average Member
Mesaje: 93
Membru din: Mie Dec 29, 2004 4:49 pm

Mesajde Sergiu » Mie Noi 23, 2005 11:59 am


johnny
Senior Member
Mesaje: 904
Membru din: Sâm Iul 31, 2004 12:22 pm
Localitate: Bucuresti
Contact:

Mesajde johnny » Mie Noi 23, 2005 12:23 pm


Avatar utilizator
Ropiku
Average Member
Mesaje: 54
Membru din: Mie Ian 12, 2005 7:35 pm
Localitate: Bucuresti
Contact:

Mesajde Ropiku » Mie Noi 23, 2005 12:23 pm

Ultima oară modificat Mie Noi 23, 2005 12:27 pm de către Ropiku, modificat 1 dată în total.
-

Avatar utilizator
Ropiku
Average Member
Mesaje: 54
Membru din: Mie Ian 12, 2005 7:35 pm
Localitate: Bucuresti
Contact:

Mesajde Ropiku » Mie Noi 23, 2005 12:25 pm

Uite si cateva likuri, sper sa iti fie de folos:

-

Sergiu
Average Member
Mesaje: 93
Membru din: Mie Dec 29, 2004 4:49 pm

Mesajde Sergiu » Mie Noi 23, 2005 12:31 pm

Totusi phpweb are nevoie de alt ceva ca exemplu
[php]
select distinct(cuvint), id from cuvinte
[/php]
si cumpul cuvint sa fie unic dar functia distinct fa distinct pe ambele cimpuri adica cuvint si id de aceea selectul de mai sus va intoarce toate cimpurile din tabel deoare id este unic

phpweb
Senior Member
Mesaje: 210
Membru din: Mar Mar 29, 2005 8:23 am
Contact:

Mesajde phpweb » Joi Noi 24, 2005 11:27 am

Multumesc tuturor care mi-au oferit ajutorul : GROUP BY a fost cea mai eleganta si mai rapida solutie. O voi tine minte pe viitor.


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 2 vizitatori