Grazie per l'aiuto cercherò di essere più chiaro.
Utilizzo mysql, ho 2 tabelle

categoria
idcategoria - categoria

collezione
idcollezione - idcategoria - collezione - foto - foto1 - foto2 - novita - descrizione

adesso devo tirare fuori:
solo le categoria (in ordina alfabetico per il campo categoria ) in cui ci siano collezioni inserite, ma con il campo novita = si , e i vari campi delle collezioni anche esse in ordine alfabetico per il campo collezione

Allora ho una situazione del genere:

TABELLA: categoria
idcategoria - categoria
1 Astucci
2 Espositori
3 Shoppers
4 Cassettiere
5 Vassoi

TABELLA: collezione
idcollezione - idcategoria - collezione - foto - foto1 - foto2 - novita - descrizione
1 - 1 - PLEXIGLASS - 3.jpg - 4.jpg - ... - si - ..........
2 - 1 - VETRO - 7.jpg - 8.jpg - ... - no - ..........
3 - 4 - LEGNO - a.jpg - ... - ... - no - ....
4 - 3 - PLASTICA - x.jpg - ... - ... - si - ...
5 - 4 - FERRO - c.jpg - ... - ... - si - ...
6 - 3 - CARTA - d.jpg - ... - ... - si - ...

Dovrei visualizzare:
Astucci
PLEXIGLASS (ecc. ecc.)
....
.. altri

Cassettiere
FERRO (ecc. ecc.)
....
.. altri

Shoppers
CARTA (ecc. ecc.)
PLASTICA (ecc. ecc.)
....
.. altri

Ho fatto questa SELECT ma mi tira fuori dei doppioni, da qui ho pensato di fare il DISTINCT
es.: se ci sono 2 tipi di Shoppers, mi da 2 categoria Shoppers con 2 collezioni.

$esito = pg_Exec($conn,"SELECT
collezione.idcollezione,
collezione.idcategoria,
collezione.collezione,
collezione.foto,
collezione.foto1,
collezione.foto2,
collezione.novita,
collezione.descrizione,

categoria.idcategoria,
categoria.categoria
WHERE
collezione.novita = 'si'
AND
collezione.idcategoria = categoria.idcategoria
ORDER by
categoria.categoria ASC
");