query con risultati errati ..

Secondo voi perchè questa query mi restituisce gli stessi risultati 3 volte:

"SELECT id_atto, tipo_atto, des_tipo, settore_atto, numgen_atto, numsett_atto, dt_atto, DATE_FORMAT(dt_atto, '%d/%m/%Y') AS dt_atto_it,  dtpubbl_atto, DATE_FORMAT(dtpubbl_atto, '%d/%m/%Y') AS dtpubbl_atto_it, dtscad_atto, DATE_FORMAT(dtscad_atto, '%d/%m/%Y ore %H:%i:%s') AS dtscad_atto_it, oggetto_atto, flagarchivia_atto, file_atto, RIGHT(file_atto,3) AS extfile_atto FROM mod_albopretorio_dati, mod_albopretorio_tipoatti, mod_albopretorio_settori WHERE flagarchivia_atto = '$arc' AND tipo_atto =  '$tipoatto' AND (mod_albopretorio_dati.tipo_atto = mod_albopretorio_tipoatti.id_tipo) ORDER BY dt_atto DESC, numgen_atto DESC"
inviato 8 anni fa
ninext
X 0 X

Riporta un resultset di prova così possiamo formulare una "diagnosi" più accurata ^^

Comunque per quanto ne so di basi di dati, potrebbe essere dovuto alla natura della selezione.

Probabilmente Gianni saprà spiegarti meglio perché.

:bye:

risposto 8 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Ho notato che se dalla query tolgo la tabella 'mod_albopretorio_settori', lasciando inalterato tutto il resto la query funziona.

Qualcuno sa perchè si comporta così??

risposto 8 anni fa
ninext
X 0 X

La query mette in join 3 tabelle:

 mod_albopretorio_dati,

 mod_albopretorio_tipoatti,

 mod_albopretorio_settori

ma fornisce una sola condizione di join nella where:

mod_albopretorio_dati.tipo_atto = mod_albopretorio_tipoatti.id_tipo

Quindi la tabella mod_albopretorio_settori verrà legata alle altre attraverso un prodotto cartesiano che causerà una moltiplicazione dei risultati per il numero di record presenti in mod_albopretorio_settori

Quindi ti basta specificare nella WHERE come collegare  mod_albopretorio_settori alle altre tabelle.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda