Recupero dati

Stato
Chiusa ad ulteriori risposte.

minatore

Utente Attivo
25 Set 2007
410
0
0

Ciao a tutti, ho un problema ci sto impazzendo un po, ma non fa niente
prima di vedere fisicamente come fare, vorrei da voi un consiglio, codice a parte.
Ho 3 tabelle 1-annunci, 2-registrazione, 3-regioni
annunci chiave esterna - id_reg
registrazione chiave id_reg, chiave esterna id_regione
regioni chiave id_regione
La domanda che vi faccio è, posso recuperare gli annunci per una determinata regione?
Id_reg può servirmi a recuperare qualcosa

Grazie da minatore
 
Ma non ti basta fare una semplice SELECT?
Codice:
SELECT * FROM annunci WHERE id_reg = 1
Recupera tutti gli annunci della regione con ID 1.

P.S. Sposto in Database.

Ciao, ma id_reg, non è id_regione, ma bensì l'id del registrato
Questa per me è una cosa nuova, di solito le tabelle che metto insieme hanno tutte una chiave di collegamento, in questo caso nella tabella annunci non ho una chiave esterna id_regione, ma ho un id_reg che si trova nella tabella registrazione e all'interno di esso ho anche l'id_regione.
 
ciao
potresti provare una cosa del genere (se non ho capito male)

PHP:
<?php
//.........
//il post potrebbe provenire da una select regioni/id_regione
$id_regione=$_POST['id_regione'];
//estrai gli id utenti della regione
$q_1=mysql_query("SELECT id_reg FROM registrazione WHERE id_regione='$id_regione'");
if(mysql_num_rows($q_1))==0){
	//non ci sono
}else{
	//ci sono
	$id_utenti=mysql_fetch_array($q_1);
	foreach($id_utenti as $valore){
		$q_2=mysql_query("SELECT * FROM annunci WHERE id_reg=$valore");
		//eventuale nuova verifica se esistono
		while($annuncio=mysql_fetch_array($q_2)){
			echo $annuncio['titolo']."<br>";
		}
	}
}
//......
?>
guarda che è schematico e comunque da verificare i nomi dei campi
 
ciao
potresti provare una cosa del genere (se non ho capito male)

PHP:
<?php
//.........
//il post potrebbe provenire da una select regioni/id_regione
$id_regione=$_POST['id_regione'];
//estrai gli id utenti della regione
$q_1=mysql_query("SELECT id_reg FROM registrazione WHERE id_regione='$id_regione'");
if(mysql_num_rows($q_1))==0){
	//non ci sono
}else{
	//ci sono
	$id_utenti=mysql_fetch_array($q_1);
	foreach($id_utenti as $valore){
		$q_2=mysql_query("SELECT * FROM annunci WHERE id_reg=$valore");
		//eventuale nuova verifica se esistono
		while($annuncio=mysql_fetch_array($q_2)){
			echo $annuncio['titolo']."<br>";
		}
	}
}
//......
?>
guarda che è schematico e comunque da verificare i nomi dei campi


Grazie Borgo, bravo come sempre, è proprio quello che volevo
posto il codice, ho dovuto eliminare il foreach perchè mi replicava il risultato
PHP:
if(isset($_POST['regione']))
	{
		$id_regione=$_POST['regione']; 
		//estrai gli id utenti della regione 
		$q_1=mysql_query("SELECT id_reg FROM registrazione WHERE id_regione='$id_regione'"); 
		$id_utenti=mysql_fetch_array($q_1); 
		
				$q_2=mysql_query("SELECT * FROM annunci WHERE id_reg=$id_utenti[id_reg]"); 
				while($annuncio=mysql_fetch_array($q_2))
					{ 
						echo $annuncio['modello']."<br>"; 
					} 
		
	}
 

Grazie Borgo, bravo come sempre, è proprio quello che volevo
posto il codice, ho dovuto eliminare il foreach perchè mi replicava il risultato
PHP:
if(isset($_POST['regione']))
	{
		$id_regione=$_POST['regione']; 
		//estrai gli id utenti della regione 
		$q_1=mysql_query("SELECT id_reg FROM registrazione WHERE id_regione='$id_regione'"); 
		$id_utenti=mysql_fetch_array($q_1); 
		
				$q_2=mysql_query("SELECT * FROM annunci WHERE id_reg=$id_utenti[id_reg]"); 
				while($annuncio=mysql_fetch_array($q_2))
					{ 
						echo $annuncio['modello']."<br>"; 
					} 
		
	}


Ciao, come sempre ho sbagliato, il codice giusto è quello riportato da Borgo, ci vuole anche il foreach, altrimenti viene preso in considerazione solo il primo che incontra

Ciao e grazie da minatore
 
Ci riprovo: per selezionare tutti gli annunci di una regione puoi fare così:
Codice:
SELECT * FROM annunci WHERE id_reg IN (SELECT id_reg FROM registrazioni WHERE id_regione = 1)
La query seleziona tutti i record della tabella annunci dove il campo id_reg fa parte della sottoquery, la quale, a sua volta, seleziona il campo id_reg della tabella registrazioni, dove il campo id_regione è 1.

In parole povere, la query seleziona gli annunci di tutte le registrazioni con regione 1.
 
Ci riprovo: per selezionare tutti gli annunci di una regione puoi fare così:
Codice:
SELECT * FROM annunci WHERE id_reg IN (SELECT id_reg FROM registrazioni WHERE id_regione = 1)
La query seleziona tutti i record della tabella annunci dove il campo id_reg fa parte della sottoquery, la quale, a sua volta, seleziona il campo id_reg della tabella registrazioni, dove il campo id_regione è 1.

In parole povere, la query seleziona gli annunci di tutte le registrazioni con regione 1.

Ciao e grazie, questa non la sapevo, bene bene
Ciao da minatore:fonzie:
 
Stato
Chiusa ad ulteriori risposte.

Discussioni simili