[Tecnica] inner join

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


Per quello si chiama "JOIN".
Se vuoi i risultati uno in fila all'altro, devi usare "UNION".

SELECT a, b FROM table1 UNION SELECT c, d FROM table2

Nota: entrambi i select devono recuperare lo stesso numero di campi.
Ho qualche dubbio pero'.. per quale motivo non puoi usare due query
separate? UNION ha senso solo per recuperare dati dello stesso tipo da
tabelle diverse:

SELECT nome, cognome FROM utenti UNION SELECT nome, cognome FROM moderatori

(e comunque, nella maggior parte dei casi, sarebbe meglio avere tutti
quanti nella tabella utenti, con un campo extra per indicare se si tratti
di un moderatore o meno)

Martino


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

> 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
>
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://liste.siena.linux.it/pipermail/tecnica/attachments/20111129/9f7bb828/attachment-0001.htm>


Maggiori informazioni sulla lista Tecnica