Ho una tabella di questo tipo:
Persona(id,nome,cognome)
supponiamo che la persona possa cambiare identità, avrò delle righe del tipo:
1|Mario|Rossi|Data inizio identità
1|Franco|Blu|Data inizio identità
2|Antonio|Verdi|Data inizio identità
2|Antonio|Gialli|Data inizio identità
Collegate a questa tabella ci sono un sacco di altre tabelle che mi danno altre informazioni sul soggetto, e devo stampare a video una cosa del tipo:
--------------
Mario Rossi dal Data
- Altre info
Franco Blu dal Data
-Altre info
--------------
Antonio Verdi dal Data
- Altre info
Antonio Gialli dal Data
- Altre info
--------------
Queste informazioni le stampo facendo dei confronti con dei campi di un form che un utente può completare per effettuare una ricerca.
La mia query è del tipo
codice:
SELECT DISTINCT id FROM Persona LEFT OUTER JOIN altretabelle WHERE condizioni di confronto coi campi del form
Così ottengo i miei id delle persone che corrispondono ai criteri di ricerca indicati dall'utente, e poi con un for prendo un id alla volta e facendo query sulle mie mille tabelle stampo tutti i dati che voglio.
Il mio problema è che ottengo i risultati della query in ordine di id (o casuale insomma), mentre io li vorrei ordinati per cognome. Però se scrivessi
codice:
SELECT DISTINCT id,cognome FROM Persona LEFT OUTER JOIN altretabelle WHERE condizioni di confronto coi campi del form ORDER BY COGNOME
otterrei tutte le righe della tabella persona, perchè quel DISTINCT su due campi mi trova tutte le righe visto che i doppioni sarebbero solo quelli che hanno uguale l'accoppiata id,cognome. Per il momento secondo la mia idea risolverei con una vista e facendo poi la select degli id su quella vista, ma non ci sarebbe una soluzione migliore per far tutto in una query con al limite delle sottoquery? non mi viene proprio in mente...