WHILE su risultato query ma tabella diversa

Salve, ho il seguente codice:

<?php
   $flotta_dif = "SELECT * FROM tabella1, tabella2, tabella3 WHERE tabella1.campo1 = tabella2.campo3
             AND tabella2.campo2 = tabella1.campo5";
   $query_flotta_dif = mysql_query ($flotta_dif, $db_gi);

while ($navi_dif = mysql_fetch_array ($query_flotta_dif)) {

   $numero_navi_dif = $navi_dif["campo1"];
   $nome_navi_dif = $navi_dif["campo2"];
   $attacco_navi_dif = $navi_dif["campo3"];
   $difesa_navi_dif = $navi_dif["campo4"];
   $corazza_navi_dif = $navi_dif["campo5"];

   echo "num". $numero_navi_dif
   ."<br>nome". $nome_navi_dif
   ."<br>attacco". $attacco_navi_dif
   ."<br>difesa". $difesa_navi_dif
   ."<br>corazza". $corazza_navi_dif;
}
?>

Praticamente, viene fatto un while della query sql, e viene creato un array. Quando faccio l'echo, che mi serve come controllo temporaneo per visualizzare i dati, mi viene stampato più volte, perchè la tabella3 contiene 2 valori, e il while si basa su quei 2 valori per stampare 2 volte.

Ma a me servirebbe che il while si basasse sui valori della tabella1 (che contiene solo 1 valore, ma può anche contenerne di più), ma con le stesse condizioni WHERE, poichè se i valori della tabella1 dovessero aumentare a 3, dovrebbe stampare 3 volte e non 1...

(ho messo l'echo a capo per non allungare la pagina e rendere più facile la visualizzazione ;) )

Spero di essermi fatto capire. Se così non fosse proverò a spiegare meglio ;)

Grazie e ciao

inviato 9 anni fa
Mr SaJaN
X 0 X

Ciao,

non ho capito molto bene purtroppo...magari se metti qualche info sulle tabelle in uso posso aiutarti di più...in generale, se le 3 tabelle sono legate, dovresti usare una JOIN, non un WHERE etc... le JOIN ti danno molta più flessibilità...e credo risolvano il tuo problema (anche se non l'ho ben capito  ::) )...per esempio:

SELECT * FROM tabella1 JOIN tabella2 ON (tabella1.campo1 = tabella2.campo3  AND tabella2.campo2 =tabella1.campo5) WHERE 1

ma la 3a tabella non ha relazioni con le altre...o sbaglio?

risposto 9 anni fa
robertomigli
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda