PDA

View Full Version : [SQL] Query INNER JOIN e valori ripetuti


GiganteSF
14-04-2015, 23:12
Dovendo studiare SQL mi sono trovato a dover eseguire delle query prendendo campi da piu' tabelle unite in relazioni da uno a molti o molti a molti.
Il risultato delle query fa uscir fuori valori ripetuti...ad esempio se un cliente ha fatto piu' ordini, il nome e cognome appare piu' volte per quanti ordini ha effettuato oppure se in un ordine sono presenti piu' prodotti ordinati, anche gli ordini appaiono n volte per quanti prodotti sono presenti in ciascun ordine...generando dati ridondanti.
Ma e' normale tutto cio'? Penso di si...resta il fatto che normalizzando le tabelle abbiamo evitato la ridondanza dei dati nelle tabelle, ridondanza che pero' si ripresenta nelle query (seppur il recordset abbia natura dinamica).
Continuare a legare tabelle non fara' calare le prestazioni delle query rendendole piu' lente a causa della continua generazione di tutti questi dati ripetuti?
Grazie.

bio82
15-04-2015, 14:46
Dovendo studiare SQL mi sono trovato a dover eseguire delle query prendendo campi da piu' tabelle unite in relazioni da uno a molti o molti a molti.
Il risultato delle query fa uscir fuori valori ripetuti...ad esempio se un cliente ha fatto piu' ordini, il nome e cognome appare piu' volte per quanti ordini ha effettuato oppure se in un ordine sono presenti piu' prodotti ordinati, anche gli ordini appaiono n volte per quanti prodotti sono presenti in ciascun ordine...generando dati ridondanti.
Ma e' normale tutto cio'? Penso di si...resta il fatto che normalizzando le tabelle abbiamo evitato la ridondanza dei dati nelle tabelle, ridondanza che pero' si ripresenta nelle query (seppur il recordset abbia natura dinamica).
Continuare a legare tabelle non fara' calare le prestazioni delle query rendendole piu' lente a causa della continua generazione di tutti questi dati ripetuti?
Grazie.

non sono dati ripetuti in senso lato.. ogni riga che ti restituisce la query contiente tutti i dati che tu richiedi...se un cliente ha 2 ordini, ti restituisce i dati di quei due ordini e i dati del cliente "ripetuti"...ma nella tabella dei clienti i dati non vengono ripetuti.

se non vuoi vedere dati ripetuti usa il distinct o un bellissimo group by....e risolvi il problema..

bio