[Tecnica] inner join

Martino di Filippo puntodifuga a gmail.com
Mar 29 Nov 2011 10:29:58 GMT


Se vuoi solo i campi "comuni" alle due tabelle:

SELECT id, idoperatore, descrizione, datainizio, datafine FROM
schedaprogetto
UNION
SELECT id, idoperatore, descrizione, datainizio, dataconsegna as
datafine FROM cornici

Puoi ovviamente usare ORDER BY sul risultato della UNION per ordinarli
tutti.
dataconsegna as datafine serve perche' i nomi dei campi nelle due tabelle
non corrispondono, e dovresti altrimenti controllare $row['dataconsegna']
|| $row['datafine'] a seconda di quale sia valido per quella riga ;)

Se invece vuoi tutti i campi perche' di serve ad esempio budget nel caso si
tratti di un progetto:

SELECT id, idprogetto, idoperatore, budget, descrizione, tipologia,
datainizio, datafine, NULL as idscheda, NULL as statopratica FROM
schedaprogetto
UNION
SELECT id, NULL as idprogetto, idoperatore, NULL as budget, descrizione,
NULL as tipologia, datainizio, dataconsegna as datafine, idscheda,
statopratica FROM cornici

Ti restituisce un elenco di righe che avranno alcuni valori null a seconda
della tabella da cui provengono (le righe da "cornici" avranno ad esempio
idprogetto nullo).


Martino


2011/11/29 bartrosso <bartrosso a gmail.com>

> tabella schedaprogetto
> id primary key
> idprogetto chiave esterna per la specifica del progetto
> idoperatore
> budget
> descrizione
> tipologia
> datainizio
> datafine
>
>
>
>
> tabella cornici
>
> id primary key
> idscheda chiave esterna con dettaglio pezzi in uso
> idoperatore
> descrizione
> datainizio
> dataconsegna
> statopratica
>
>
>
> i dati contenuti adesso sono completamente casuali
>
> se eseguo una semplice select su cornici ottengo 3 elementi
> se eseguo una select su schedaprogetto ottengo 2 elementi
>
> vorrei una select che mi dia i 5 elementi cosi da poterli ordinare per
> dataconsegna e stop
>
> inner join mi restituisce 6 elemeni con tutte le combinazioni così
> tabellate, che mi rende impossibile ciclare per
>
> t1t1
> t1t2
> t1t3
> t2t1
> t2t2
> t2t3
>
>
> p.s. ho letto ora la tua ultima mail, ma ormai te la invio lo stesso :-)
>
> tanga
>
>
>
>
>
>
>
>
>
>
>
> 2011/11/29 Motaz Abuthiab <moty66 a gmail.com>
>
>> Puoi incollare la struttora delle tabelle ed esempio di dati ?
>>
>>
>> Il giorno 29 novembre 2011 11:10, bartrosso <bartrosso a gmail.com> ha
>> scritto:
>>
>> ti ringrazio delle risposte velocissime, ma continuo ad avere problemi.
>>>
>>> Non è difficile, ho letto i manuali, l'ho anche gia rifatto in passato,
>>> ma io da ste tabelle non riesco a tirare fuori niente. quindi sto
>>> sbagliando qualcosa.
>>>
>>> Allora ho due tabelle, con UN SOLO elemento ciascuno
>>>
>>> fatta la select cornici.*, schedaprogetto.* FROM cornici, schedaprogetto
>>> dallo spazio SQL di phpmyadmin ottengo
>>> non due ma una riga di risultato, contenente TUTTI i campi delle due
>>> tabelle
>>>
>>> come faccio ciclarle?
>>>
>>> se inserisco più elementi per riga non ottengo le righe delle tabelle,
>>> ottengo una loro combinazione.
>>>
>>> cioè 2 elementi per tabella mi restituiscono 4 elementi contenenti le
>>> combinazioni,
>>>
>>> 2 elementi in una e 3 nell'altra ottengo 6 righe con le combinazioni 2X3
>>>
>>> e cosi via.
>>>
>>>
>>> Semplicemente mi servono i risultati delle due select messi in fila,
>>>
>>> c'è il modo o devo crearmi per ogni inserimento una tabella terza che si
>>> salvi TUTTI gli inserimenti con riferimenti esterni?? mi sembra strano..
>>>
>>>
>>> tanga
>>>
>>>
>>>
>>>
>>>
>>> 2011/11/29 Motaz Abuthiab <moty66 a gmail.com>
>>>
>>>> Buongiorno
>>>>
>>>> select t1.*,t2.*, t1.dataconsegna as t1dataconsegna , t2.dataconsegna
>>>> as dataconsegna2 from tablella1 as t1, tabella2 as t2 where .........
>>>>
>>>> cosi hai due data consegna
>>>>
>>>> m.
>>>>
>>>>
>>>>
>>>>
>>>> Il giorno 29 novembre 2011 10:53, bartrosso <bartrosso a gmail.com> ha
>>>> scritto:
>>>>
>>>> scusatemi,
>>>>> mi spiego meglio.
>>>>>
>>>>>
>>>>>
>>>>> ho due tabelle una di ordini cornici e una di schedeprogetto (altra
>>>>> categoria lavorativa). Entrambe le tabelle contengono il dato dataconsegna.
>>>>>
>>>>> devo ordinare tutti gli elementi di entrambe le tabelle disposte per
>>>>> dataconsegna per tirare fuori uno scadenzario.
>>>>>
>>>>> la domanda, devo semplicemente selezionare tutti gli elementi da
>>>>> entrambe le tabelle e stamaprle ordinandole per dataconsegna.
>>>>>
>>>>>
>>>>> quale tipo di join devo usare?
>>>>>
>>>>> tanga
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> 2011/11/29 bartrosso <bartrosso a gmail.com>
>>>>>
>>>>>> mi sono letto il fucking manual, ma qual'è la differenza reale tra
>>>>>> fetch array e fetch assoc??
>>>>>> non capisco, crea un array associativo invece di uno ... uguale con
>>>>>> un valore assoc su eventuali secondi parametri.
>>>>>> bene.
>>>>>>
>>>>>> tradotto?
>>>>>>
>>>>>> è più meglio?
>>>>>>
>>>>>> tanga
>>>>>>
>>>>>>
>>>>>>
>>>>>> 2011/11/28 Motaz Abuthiab <moty66 a gmail.com>
>>>>>>
>>>>>>> Non devi usare tabella.alias, basta il nome del campo, se hai due
>>>>>>> campi con nomi uguali dovresti fare select t1.id as t1_id, t2.id as
>>>>>>> t2_id from t1, t2 where ......
>>>>>>>
>>>>>>> Ti consiglio di usare mysql_fetch_assoc() invece di fetch_array()
>>>>>>>
>>>>>>> M.
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>> Crea il tuo sito con <http://dinamocms.com>dinamocms.com
>>>>>>>
>>>>>>> Il giorno 28/nov/2011, alle ore 19:50, bartrosso <
>>>>>>> bartrosso a gmail.com> ha scritto:
>>>>>>>
>>>>>>> scusatemi
>>>>>>>
>>>>>>> ma quando devo fare una inner join con mysql e unisco due tabelle,
>>>>>>> usando gli alias,
>>>>>>>
>>>>>>> come si fa il fetch array dei risultati?
>>>>>>>
>>>>>>> Es:
>>>>>>>
>>>>>>> $query=mysql_query("SELECT * from pippo as p, topolino as t");
>>>>>>>
>>>>>>> while($res=mysql_fetch_array($query)){
>>>>>>> $id1=$res['p.id'];
>>>>>>> $id2=$res['t.id'];
>>>>>>> }
>>>>>>>
>>>>>>>
>>>>>>> QUESTO NON MI FUNZIONA, ma non mi da neanche errori
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Tanga aka Bartrosso
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Sono ciò che sono grazie a quello che siamo tutti,
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> un mio amico mi ha detto che ubuntu significa: "Non so configurare
>>>>>>> Debian.."
>>>>>>>
>>>>>>>
>>>>>>> «Immagina se ogni persona sulla terra potesse condividere con
>>>>>>> accesso libero e totale tutta la conoscenza umana.»
>>>>>>> — Jimmy Wales, fondatore di Wikipedia
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Tecnica mailing list
>>>>>>> Tecnica a liste.siena.linux.it
>>>>>>> http://liste.siena.linux.it/cgi-bin/mailman/listinfo/tecnica
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Tecnica mailing list
>>>>>>> Tecnica a liste.siena.linux.it
>>>>>>> http://liste.siena.linux.it/cgi-bin/mailman/listinfo/tecnica
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Sono ciò che sono grazie a quello che siamo tutti,
>>>>>>
>>>>>>
>>>>>>
>>>>>> un mio amico mi ha detto che ubuntu significa: "Non so configurare
>>>>>> Debian.."
>>>>>>
>>>>>>
>>>>>> «Immagina se ogni persona sulla terra potesse condividere con accesso
>>>>>> libero e totale tutta la conoscenza umana.»
>>>>>> — Jimmy Wales, fondatore di Wikipedia
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Sono ciò che sono grazie a quello che siamo tutti,
>>>>>
>>>>>
>>>>>
>>>>> un mio amico mi ha detto che ubuntu significa: "Non so configurare
>>>>> Debian.."
>>>>>
>>>>>
>>>>> «Immagina se ogni persona sulla terra potesse condividere con accesso
>>>>> libero e totale tutta la conoscenza umana.»
>>>>> — Jimmy Wales, fondatore di Wikipedia
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Tecnica mailing list
>>>>> Tecnica a liste.siena.linux.it
>>>>> http://liste.siena.linux.it/cgi-bin/mailman/listinfo/tecnica
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> --
>>>>
>>>> Crea il tuo sito con Dinamo Cms
>>>> http://www.dinamocms.com
>>>> .
>>>>
>>>> _______________________________________________
>>>> Tecnica mailing list
>>>> Tecnica a liste.siena.linux.it
>>>> http://liste.siena.linux.it/cgi-bin/mailman/listinfo/tecnica
>>>>
>>>>
>>>
>>>
>>> --
>>> Sono ciò che sono grazie a quello che siamo tutti,
>>>
>>>
>>>
>>> un mio amico mi ha detto che ubuntu significa: "Non so configurare
>>> Debian.."
>>>
>>>
>>> «Immagina se ogni persona sulla terra potesse condividere con accesso
>>> libero e totale tutta la conoscenza umana.»
>>> — Jimmy Wales, fondatore di Wikipedia
>>>
>>>
>>> _______________________________________________
>>> Tecnica mailing list
>>> Tecnica a liste.siena.linux.it
>>> http://liste.siena.linux.it/cgi-bin/mailman/listinfo/tecnica
>>>
>>>
>>
>>
>> --
>> --
>>
>> Crea il tuo sito con Dinamo Cms
>> http://www.dinamocms.com
>> .
>>
>> _______________________________________________
>> Tecnica mailing list
>> Tecnica a liste.siena.linux.it
>> http://liste.siena.linux.it/cgi-bin/mailman/listinfo/tecnica
>>
>>
>
>
> --
> Sono ciò che sono grazie a quello che siamo tutti,
>
>
>
> un mio amico mi ha detto che ubuntu significa: "Non so configurare
> Debian.."
>
>
> «Immagina se ogni persona sulla terra potesse condividere con accesso
> libero e totale tutta la conoscenza umana.»
> — Jimmy Wales, fondatore di Wikipedia
>
>
> _______________________________________________
> Tecnica mailing list
> Tecnica a liste.siena.linux.it
> http://liste.siena.linux.it/cgi-bin/mailman/listinfo/tecnica
>
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://liste.siena.linux.it/pipermail/tecnica/attachments/20111129/72e2f87e/attachment.htm>


Maggiori informazioni sulla lista Tecnica