View Full Version : [php] Usare le join, ma vista l'ora non ci riesco...
Credo si possa realizzare con una join una relazione tra 2 tabelle (voi direte: studiare sembra troppo difficile, eh?) ma mi affido alla clemenza del forum...
Supponiamo di avere una prima tabella tipo:
ID | nome | cognome| eta
------------------------------------
e i suoi vari records
1 | .... | ... |
2 | .... | ... |
3 | ... | ... |
ed un'altra tabella cosė fatta:
ID | id_nome | Descrizione | Autore | Testo
----------------------------------------------------
1 | 1 | ... |
2 | 3 | ... |
E' possibile fare un'unica query che mi permette di prelevare dalla seconda tabella, utilizzando id_nome, i dati relativi al corrispondente record della prima?
Spiegazione poco chiara??
In pratica utilizzando id_nome, vorrei stampare i dati della seconda tabella che si riferiscono alla persona della prima tabella il cui ID=id_nome...
Vista l'ora una domanda stupida come questa me la passate? ;-)
Grazie!!
SELECT Tab1.*
FROM Tab1, Tab2
WHERE Tab1.ID = Tab2.id_nome;
oppure
SELECT Tab1.*
FROM Tab1, Tab2
WHERE Tab1.ID IN (SELECT Tab2.id_nome FROM Tab2);
Queste due possono dare anche risultati leggermente diversi (nella seconda non ci sono ripetizioni), la seconda potrebbe essere pių veloce nel caso i record in Tab2 siano pochi e i record in Tab1 tanti.
Altrimenit c'č il JOIN che č probabilmente pių performante della prima:
SELECT Tab1.* FROM Tab1 INNER JOIN Tab2 ON Tab1.ID = Tab2.id_nome;
....sempre pių difficile ora..
- DB MySql -
Nell situazione precedente posso anche stampare prima i dati della prima tabella e poi recupeare quelli della seconda?
Nel senso... con un mysql_fetch_array recupero quanto mi serve dalla prima e poi posso fare anche un mysql_fetch_array sulla seconda tabella?
grazie!
P.S. Tu penserai... provare a farlo no?
Originariamente inviato da utrecht
P.S. Tu penserai... provare a farlo no?
A parte quello... Su MySQL 4.0.x non funziona la seconda query...
Perchč recuperare i dati separatamente se puoi farlo con una sola query ?
ehm...:(:( allora non c'ho capito una mazza...
il fatto č che non riesco a stampare a video i record della tabella2... dopo la query non utilizzo mysql_fetch_array per recuperare i valori di tab2?
Scusate l'ignoranza!
Vuoi recuperare quelli della prima, quelli della seconda o entrambi ?
Per entrambi:
SELECT *
FROM Tab1, Tab2
WHERE Tab1.ID = Tab2.id_nome;
Fai la scansione con mysql_fetch_array dei dati della prima tabella (attenzione che i campi che presenti sia in tab1 che tab2 sono preceduti dal nome della tabella per essere distinti...ad es. Tab1.ID e Tab2.ID)...
Poi fai: mysql_data_seek($res, 0);
Ed ora fai la scansione sempre con mysql_fetch_array dei dati della seconda tabella...
Gentilissimo!!
In effetti ero partito con l'aver bisogno dei dati della seconda ma poi ho voluto provare a fare qulacosa in pių...
Nessun problema...l'importante č che tu ci sia riuscito ;)
Fai la scansione con mysql_fetch_array dei dati della prima tabella (attenzione che i campi che presenti sia in tab1 che tab2 sono preceduti dal nome della tabella per essere distinti...ad es. Tab1.ID e Tab2.ID)...
ehm... tipo...
while ($row = mysql_fetch_array ($result)) {
echo "id: ".Tab1.$row[ "id"]. "<br>\n";
echo "cognome: ".Tab1.$row[ "cognome"]. "<br>\n";
echo "fullname: ".Tab1.$row[ "nome"]. "<br>\n";
echo "Tel: ".Tab1.$row[ "telefono"]. "<hr>\n";
}
Mettendo che solo il campo ID sia presente in entrambe le tabelle...cosė:
while ($row = mysql_fetch_array ($result)) {
echo "id: ".$row[ "Tab1.ID"]. "<br>\n";
echo "cognome: ".$row[ "cognome"]. "<br>\n";
echo "fullname: ".$row[ "nome"]. "<br>\n";
echo "Tel: ".$row[ "telefono"]. "<hr>\n";
}
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.