molti a molti

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
uno, nessuno, centomila...
in un DB mySQL cosruisco una tabella "caratteristiche" non fissabile a priori (le caratteristiche possono aumentare o diminuire)

id_ca caratteristica
1 regione con monti
2 regione con mare
3 regione con lago
......... ecc

a fronte avrò la tabella delle regioni è evidente che ogni regione potrà avere una, nessuna o tutte le caratteristice della precedente per cui si potrebbe preparare la tabella "regioni"

id_R int ec.. primary key
regio varchar
car_1 int
car_2 int
.......
car_n

prima dimanda : se le caratteristiche aumentano? o anche diminuiscono?

siconda: mettiamo che le caratteristice diventino un centinaio, per estrarre le caratteristiche di una regione devo esplorare tutto il record e può diventare dispendioso anche come risorse. non esiste sistema migliore?

grazie
 
In questo modo è difficile... ti conviene creare una tabella intermedia in cui inserisci l'ID della regione, l'ID della caratteristica ed un ID della tabella stessa.

In fase di lettura dei dati farai una JOIN sulle tre tabelle del tipo:

SELECT * FROM regioni, caratteristiche, intermedia
WHERE
regioni.id = caratteristiche.regione
AND
regioni.id = intermedia.regione
AND
caratteristiche.id = intermedia.caratteristica

In questo modo però se non ci sono delle caratteristiche non visualizzi nessun dato.

Lavoraci un po!
 
ancora piccola delucidatio

intanto grazie

se non ho capito male devo fare tre tabelle:

tabella regioni
id_R int auto_incr primary_k
reg varchar

tabella caratteristiche //c'è sempre comunque almeno un dato
id_C int auto_incr primary_k
id_R int //preso da tab regioni
car varchar

tabella intermedia
id_I int auto_incr primary_k
id_C int //preso da tab caratteristiche
id_R int //preso da tab regioni

faccio la query
PHP:
$selziona = "SELECT * FROM  regioni, caratteristiche, intermedia WHERE regioni.id = caratteristiche.regione....";

$query= my_sql($seleziona);

while (my_sql_fetch_array($query)){
$regione= $query[reg];// o devo = $query[regioni.reg]
$caratteristica=$query[car];// o devo = $query[caratteristiche.car]
echo ..........
}

Quando e "se" riesco posterò il sito

parafrasando benigni cominciavo a scrivere "perdete ogni speranza o voi che postate......"
 

Discussioni simili