|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jul 2002
Messaggi: 202
|
[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!! |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
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; |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Jul 2002
Messaggi: 202
|
....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? |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
Perchè recuperare i dati separatamente se puoi farlo con una sola query ? |
|
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Jul 2002
Messaggi: 202
|
ehm...
![]() ![]() 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! |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
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... |
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Jul 2002
Messaggi: 202
|
Gentilissimo!!
In effetti ero partito con l'aver bisogno dei dati della seconda ma poi ho voluto provare a fare qulacosa in più... |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Nessun problema...l'importante è che tu ci sia riuscito
![]() |
![]() |
![]() |
![]() |
#9 | |
Member
Iscritto dal: Jul 2002
Messaggi: 202
|
Quote:
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"; } |
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
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"; } |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:39.