Ciclo su 3 tabelle

alexgentili

Utente Attivo
15 Lug 2010
39
0
0
Ciao a tutti, dopo ore ed ore di ricerca non riesco a venirne a capo e vi chiedo aiuto:

Ho 3 tabelle mysql:

- tbl_soci / composta da: user_id, nome, cognome.
- tessere / composta da: id, anno.
- tessera_pagata_soci / composta da: id, id_socio, id_tessera.

Obbiettivo: creare un ciclo che mi estragga tutti i soci che hanno pagato la tessera del 2013
Cosa ho fatto:

PHP:
// ESTRAGGO TUTTE LE TESSERE CREATE NEL 2013
	

	
$anno_in_corso='2013';

$p = 0; 

 $id_tessere_estratte = array(); 
 $sql = "SELECT * FROM tessere WHERE anno='$anno_in_corso' ";
 $ris = mysql_query($sql) or die("errore!"); 
 
 while($record = mysql_fetch_array($ris)) {
 $id_tessere_estratte[$p]["id"] = $record["id"]; 
 
$p++;
 
  }


// INTERROGO LA TABELLA TESSERA_PAGATA_SOCI PER TROVARE L'ID DELLE TESSERE PAGATE DAI SOCI NEL 2013

$p1 = 0; 

 $id_tessere_estratte1 = array(); 
 $sql1 = "SELECT * FROM tessera_pagata_soci WHERE  id_tessera='$id_tessere_estratte' ";
 $ris1 = mysql_query($sql1) or die("errore!"); 
 
 while($record1 = mysql_fetch_array($ris1)) {
 $id_tessere_estratte1[$p1]["id"] = $record1["id"]; 
 
$p1++;
 
 }



// TROVO IL NOME ED IL COGNOME DEL SOCIO CHE HA PAGATO LA TESSERA

$query = "SELECT * FROM tbl_soci "; 


$result = mysql_query($query) or die("Errore su esecuzione delle query...");
$numrows = mysql_num_rows($result);
if ($numrows==0) echo "<center><br>"."Nessun record presente"."</center>";

else
{ 
 
//Realizzo un ciclo for che si ripete per il numero di occorrenze trovate
for($x=0; $x<$numrows; $x++){
//Recupero il contenuto di ogni record trovato
$resrow = mysql_fetch_array($result);
//Stampo il risultato come link in una riga di tabella
$prog_list++;


$user_id=$resrow['user_id'];
$nominativo_pilota=$resrow['nome']." - ".$resrow['cognome'];


// STAMPO A VIDEO I RISULTATI

  }

Non riesco a fare comunicare i 2 cicli while..
Cioè non capisco come passare il risultato del primo ciclo while come condizione del secondo.

grazie a chi volesse aiutarmi.
 
Ciao, io tenterei di risolvere con una sola query :
PHP:
<?php
$query = "SELECT * FROM tessere T
                   JOIN tessera_pagata_soci TP ON T.id = TP.id_tessera
                   JOIN tbl_soci S ON S.user_id = TP.id_socio
                   WHERE T.anno = 2013";
?>
 
Fantastico, avevo anche provato con le Join ma non ero riuscito.

Se dovessi aggiungere un ORDER BY... sulla tabella tbl_soci la sintassi è uguale ?
 
Si,
PHP:
 <?php
$query = "SELECT * FROM tessere T
                   JOIN tessera_pagata_soci TP ON T.id = TP.id_tessera
                   JOIN tbl_soci S ON S.user_id = TP.id_socio
                   WHERE T.anno = 2013 ORDER BY S.cognome";
?>
 

Discussioni simili