• User Attivo

    [SQL] Join multipli su tabelle senza relazioni esplicite

    ciao a tutti,
    devo fare una query SQL con un JOIN su due tabelle che non sono collegate tra loro, ovvero:

    SELECT * FROM t1 JOIN t2 ON t1.pippo=t2.id JOIN t3 ON t1.pluto=t3.id WHERE....

    come posso fare? dato che t2 e t3 non so
    non in alcuna relazione fra loro?
    grazie!

    Marco


  • User Attivo

    Secondo me se non c'è relazione non c'è modo di joinarle, devi creare una relazione tra le due tabelle, poi essendo un problema molto generico non posso valutare elementi precisi per poterti aiutare di più.


  • User Attivo

    Come dice tonyx esponi meglio il problema. Se le 2 tab non hanno un id in comune in che modo intendi joinarle? Se non lo sai allora spiega in maniera più ampia il problema, così da poter lavorare insieme ad una soluzione.

    Ciao 🙂


  • Moderatore

    @sherlock said:

    ciao a tutti,
    devo fare una query SQL con un JOIN su due tabelle che non sono collegate tra loro, ovvero:

    SELECT * FROM t1 JOIN t2 ON t1.pippo=t2.id JOIN t3 ON t1.pluto=t3.id WHERE....

    come posso fare? dato che t2 e t3 non so
    non in alcuna relazione fra loro?
    grazie!

    Marco

    Se la relazione non esiste nel DB puoi comunque fare la join via codice ma rallenterà un pò l'elaborazione (dipende dal numero di records).
    In ogni modo NON fare più di UN JOIN per ogni query di questo tipo (senza relazione esplicita). Quindi:

    
    SELECT * FROM t1 INNER JOIN t2 
                         ON t1.pippo=t2.id 
     WHERE....
    
    

    PS: Se ti serve* necessariamente* il dato di una terza tabella collegata prenditi solo l'ID ( cioè la chia ve esterna presente in una delle due tabelle: t1 o t2) poi, in seguito (via codice) te lo vai a decodificare con una nuova semplice query di lookup (select descr from t3 where t3.id=chiave_esterna_di_prima;).

    Altro consiglio, non usare "select * " ma specifica lo stretto necessario...
    select campo1, campo2, ... from t1 inner join t2 ....
    :ciauz: