Pagina 1 din 1

count probleme

Scris: Joi Aug 02, 2012 7:18 pm
de betonic
Am o baza de date de genu :

Id nume localitate referent
1 vasile cluj 0
2 ion alba 1
3 alex suceava 1
4 ana ploiesti 2
5 mircea iasi 1
6 miihai bacau 3

As vrea sa imi afiseze rezultatele cam asa

Pozite Id Nume Localitate Nr ref
1 1 vasile cluj 3
2 2 ion alba 1
3 3 alex suceava 1

Practic sa le contorizeze dupa nr de ref.
Am ajuns la chestia asta.

$query = 'SELECT id, COUNT(referent) FROM `mail4` WHERE referent>0 GROUP BY referent ORDER BY COUNT(referent) DESC ';

Mi le ordoneaza dupa nr de ref dar celelate date (nume, localitatea, idul) nu mi le afiseaza.

Chiar daca nu-s nou pe acest forum nu folosesc php decat de cateva ori pe an, so daca imi dati un sfat raman dator. Mersi
[/b]

Scris: Joi Aug 02, 2012 7:56 pm
de quadmachine

Scris: Joi Aug 02, 2012 8:32 pm
de betonic

Scris: Joi Aug 02, 2012 8:33 pm
de betonic

Scris: Joi Aug 02, 2012 10:57 pm
de quadmachine

Scris: Vin Aug 03, 2012 12:47 am
de betonic

Scris: Vin Aug 03, 2012 2:27 am
de quadmachine

Scris: Vin Aug 03, 2012 5:30 pm
de betonic

Scris: Dum Aug 05, 2012 2:06 pm
de R3dC0d3

Scris: Dum Aug 05, 2012 6:12 pm
de betonic

Scris: Dum Aug 05, 2012 6:49 pm
de R3dC0d3

Scris: Lun Aug 06, 2012 12:59 pm
de betonic
$query = 'SELECT id, nume, localitate, COUNT(referent) as `totalRef` FROM `test` WHERE `referent` > 0 GROUP BY `referent` ORDER BY `totalRef` DESC';

asta merge, ii grupeaza dupa nr de referinte , doar $row['nume'] afisat nu numele celui care a adus referintele ci e numele primul inregistrat.

adica daca ion care are idul nr 5 a inregistrat pe vasile, mihai si gheorghe , atunci el idul 5 are 3 referinte , interogarea de mai sus le grupeaza pe cele 3 inregistrari insa cand printe $row['nume'] imi afiseaza numele primului inregistrat , cazu de fata vasile si eu as vrea sa imi zica ca inregistrarile is facute de idul nr 5 adica ion :)) complicat

Scris: Lun Aug 06, 2012 2:02 pm
de Reventon
ti-am simulat un query pe serverul meu.
ai de dat o bere :)
acuma iti arata cati referali are fiecare, cat si numele parintelui

-----------

SELECT tabel1.id, tabel1.nume, tabel1.localitate, tabel1.referent, COUNT(tabel2.nume) AS nr_referenzi, tabel3.nume AS parinte
FROM utilizator AS tabel1

LEFT JOIN utilizator AS tabel2
ON tabel2.referent = tabel1.id

LEFT JOIN utilizator AS tabel3
ON tabel1.referent = tabel3.id

GROUP BY tabel1.id
ORDER BY tabel1.id

-----------------
asa arata tabelul rezultat:

id nume localitate referent nr_referenzi parinte
1 vasile cluj 0 3 NULL
2 ion alba 1 1 vasile
3 alex suceava 1 1 vasile
4 ana ploiesti 2 0 ion
5 mircea iasi 1 0 vasile
6 mihai bacau 3 0 alex

Scris: Lun Aug 06, 2012 3:34 pm
de betonic
de asta aveam nevoie . mersi. cum facem cu berea aia? :) daca ai un cont la brd iti dau de 10 beri . serios vb

Scris: Mar Aug 07, 2012 2:07 pm
de Reventon