Newsgroup: it.comp.lang.visual-basic
Titolo: [?] query su più tabelle semplice select come

lavoro con ado myodbc e mysql 4 ho tre tabelle voglio semplicemente estrarre
tutti i record di tutte e tre le tabelle per fare un report; il problema e
che nelle tabelle sono contenuti in totale 31 record e perchè me ne
restituisce 221 ?
la query è semplicissima:
SELECT tab1.*, tab2.*, tab3.* FROM tab1,tab2,tab3;
Dani

 SELECT tab1.*, tab2.*, tab3.* FROM tab1,tab2,tab3;
Se le tabelle non sono legate da una chiave non puoi fare una query
cosě, devi farne tre, una per ogni tabella.
Se invece sono legate da qualche chiave non so qualč la
sintassi per mysql ma devi specificare la chiave.
tab1.codice=tab2.codice AND tab2.codice=tab3.codice
MIk


OK potrei anche fare tre query diverse ma poi come produco un unico report
(che sarà una fattura)
secondo me bisogna trovare una query appropriata al caso ma alla fine se si
può mi sta bene anche l'altro metodo
Dani

 se si può mi sta bene anche l'altro metodo
Puoi dare qualche info in più sulle tre tabelle che vediamo
se cè una query che fa al caso tuo??
MIk

 MIk
sono semplici tabelle myisam con con una chiave primaria unica id
le tre tabelle non possono essere legate le une alle altre in quanto non
esiste una relazione semplicemente dividono i dati di utenti dalle aziende e
da un'altra categoria.
forse una sub query ma non mi viene in mente altro strano che la quey che ho
postato restituisca una ripetizione dei record fino a farne vedere 221 al
posto di 31 boh ?!
Dani

 vedere 221 al posto di 31 boh ?!
Quanti record hanno ripsettivamente le tabelle?
MIk

 MIk
utenti 17 record, aziende 13 record , tab3 1 record
totale della query postata 221
Dani

> Quanti record hanno ripsettivamente le tabelle?

Quanto fa 17*13*1 ???
MIk

 MIk
OK è il risultato della select ma non ne capisco cmq il meccanismo ho
provato nel frattempo ad usare distinct e specificare i campi da estrarre
esempio
select campo1.tab1,campo1.tab2,campo1.tab3 from tab1,tab2,tab3;
e la query adesso mi restituisce 18 record (strano anche questo come
risultato per me si intende) c'è una soluzione ?
Dani

 estrarre esempio
Se non specifichi una chiave lui ragiona così
1° record Tab1    1° record Tab2    1° record Tab1
1° record Tab1    2° record Tab2    1° record Tab1
1° record Tab1    3° record Tab2    1° record Tab1
............................................................................
..
............................................................................
..
2° record Tab1    1° record Tab2    1° record Tab1
2° record Tab1    2° record Tab2    1° record Tab1
3° record Tab1    3° record Tab2    1° record Tab1
Fa il prodotto cartesiano dei vari record capito?
Quindi l'unico modo è estrarli separatamente,
anche se mi sembra strano che non siano legati....
...visto che se non sono legati non interagiscono tra di loro
e quindi è strano vederli tutti nello stesso report!
MIk


Quindi non posso usare il datareport in definitiva giusto ?
Dani

> Quindi l'unico modo è estrarli separatamente,

Questo non te lo so dire, non lo conosco molto!
Però adesso la domanda è cambiata..
"Come faccio a passare tre query a un datareport?"
MIk

 posto di 31 boh ?!
Dovrebbe essere il prodotto matriciale o il prodotoo combinatorio o qualcosa
del genere ... una logica c'è comunque ed è anche documentata.
Saluti

 MIk
OK ho già postato una nuova domanda che ha come titolo quello da te proposto
Dani


Risposta (SELECT c1,c2,c3 FROM tab1) Union (SELECT c1,c2,c3 FROM tab2) Union
(SELECT c1,c2,c3 FROM tab3);
Dani

> "Come faccio a passare tre query a un datareport?"

Ma le tabelle contengono gli stessi campi??
MIk

 ha scritto nel messaggio
news:bg5uag$l1ukn$1...@ID-165476.news.uni-berlin.de...

Come nell'altro post SI identici why ?