- Home
- Categorie
- Coding e Sistemistica
- PHP
- "Accoppiare" dati di due tabelle
-
"Accoppiare" dati di due tabelle
Buondì a tutti.
Parto subito con la domanda di aiuto.Ho il mio bel DB con due tabelle: prodotti (nome, area di produzione) e coordinate (che contiene le coordiante LAT e LONGI dei paesi).
Avrei la necessità di "stampare" il prodotto con le corrispondenti coordinate dell'area di produzione.
Giusto per chiarivi:
Tabella prodotti contiene NOME e AR_RI_PRODOTTO
Tabella coordinate contiene LAT, LONGI e FULL_NAMEI campi che mettono in relazione le due tabelle sono:
ar_ri_prodotto e full_nameIl campo ar_ri_prodotto contiene, ad esempio: Gioia del Colle, Santeramo, Turi, Altamura, Grumo Appula, Noci, Putignano, Rutigliano, Sammichele di Bari, Sannicandro, Acquaviva delle Fonti, Adelfia, Casamassima, Cassano delle Murge, Castellana Grotte, Conversano
Il campo full_name invece, contiene, ad esempio, Altamura
In pratica in ar_ri_prodotti possiamo trovare uno o più paesi, in full_name, invece, solo un paese.
Vi prego HELP!
Grazie
-
per stampare i video in una sola pagina i dati di due tabelle devi usare la funzione INNER JOIN di mysql...
-
Benissino quindi non ho sbagliato.
L'istruzione che ho inserito è
SELECT p.nome,p.ar_ri_prodotto,c.lat,c.longi,c.full_name FROM prodotti p INNER JOIN coordinate c ON p.ar_ri_prodotto = c.full_nameSolo che questa mi restituisce solo 15 risultati su 234 prodotti.
Non capisco dove sbaglio!
-
Se non ho capito male il campo AR_RI_PRODOTTO è una stringa che contiene tanti valori mentre il campo FULL_NAME ne contiene uno solo.
Se tu nella query inserisci ".... ON p.ar_ri_prodotto = c.full_name" questa ti troverà solo quelle che hanno le corrispondenze esatte; prova a mettere ".... ON c.full_name LIKE %ar_ri_prodotto%"
(non sono del tutto sicuro su come mettere i segni del %, ma devi comunque fare una ricerca con LIKE e non con = ).Spero di esserti stato di aiuto .... fammi sapere
-
Esatto PippoJoe...hai capito benissimo.
Ho usato il sistema che mi hai suggerito (SELECT p.nome,p.ar_ri_prodotto,c.lat,c.longi,c.full_name FROM prodotti p INNER JOIN coordinate c ON c.full_name LIKE '%p.ar_ri_prodotto%') ma restituisce un insieme vuoto (i.e. zero righe).
-
Pensandoci bene però, da quanto posso aver capito di MySql che non è molto, credo che puoi accoppiare due tabelle solo se gli indici sono esattamente uguali.
Adesso non so a cosa ti serva questo DB, però perchè non provi a ribaltare la situazione e cioè assegnare ad ogni nome di città più prodotti così avrai gli stessi indici tra le due tabelle e poi, una volta estratti i dati, li puoi ancora filtrare per tipo di prodotto. (Ti ripeto che non sono molto ferrato nel settore, però un tentativo si può fare).