22nd February 2010, 18:17
#2
1 out of 1 members found this post helpful.
Cod:
1. SELECT CONCAT(autor, '(', COUNT(id), ')'), COUNT(id) as nr_articole FROM nume_tabel GROUP BY autor ORDER BY nr_articole
Am folosit CONCAT ca rezultatul sa arate exact cum l-ai descris, dar in ralitate numarul de articole il pui din programare intre paranteze.
2. Ar trebui sa ai urmatoarele tabele
tip_utilizator(id_tip, denumire, nr_maxim_evenimente)
utilizator(id_utilizator, ..... id_tip)
eveniment(id_eveniment,denumire....)
utilizator_eveniment(id_utilizator_eveniment, id_utilizator, id_eveniment)
In tabelul tip_utilizator pastrezi tipurile (admin, user simplu ...)
In momenul in care un utilizator se inscrie la un eveniment adaugi un rand in tabelul utilizator_eveniment cu id_utilizator si id_eveniment la care se inscrie. In acest fel un utilizator se poate inscrie la mai multe eveniment.
In momenul in care vrei sa afli la cate evenimente s-a inscris un utilizator faci query pe tabelul utilizator_eveniment.
SELECT COUNT(id_utilizator_eveniment) FROM utilizator_eveniment WHERE id_utilizator = :id_utilizator
Sa nu uiti sa pui index cheie primara auto increment pe bold si indecsi pe cheile externe.
Pentru tabelul utilizator_eveniment poti renunta la id_utilizator_eveniment daca pui un index unic pe cele 2 campuri chei externe. Dar nu are rost sa te complici, poti sa il faci si asa.