• User Newbie

    "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_NAME

    I campi che mettono in relazione le due tabelle sono:
    ar_ri_prodotto e full_name

    Il 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


  • User Attivo

    per stampare i video in una sola pagina i dati di due tabelle devi usare la funzione INNER JOIN di mysql...


  • User Newbie

    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_name

    Solo che questa mi restituisce solo 15 risultati su 234 prodotti.
    Non capisco dove sbaglio!


  • User

    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


  • User Newbie

    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).


  • User

    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).