Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: INNER JOIN "composta"

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    180

    INNER JOIN "composta"

    Ciao a tutti,
    rieccomi con un problema sulle join.
    Ho imparato ad usare INNER JOIN per legare due tabelle e ricavare i dati desiderati.

    Il problema che mi pongo ora è quello di capire come poter legare due tabelle che abbiano in comune (cioè la chiave) una composizione di campi e non un singolo campo, cerco di spiegarmi:

    parliamo dei codici istat delle città italiane e supponiamo che un campo sia il codice provincia: 20 e uno il codice del comune:100

    la chiave con cui legare le due tabelle è il codice:20100, cioè la COMPOSIZIONE dei due campi.
    Come faccio ad inserire questa uguaglainza di campi (composti) nella INNER JOIN?

    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    a.provincia = b.provincia and a.comune = b.comune

    qual è il problema?

  3. #3

    Re: INNER JOIN "composta"

    Originariamente inviato da vincentand
    Ciao a tutti,
    rieccomi con un problema sulle join.
    Ho imparato ad usare INNER JOIN per legare due tabelle e ricavare i dati desiderati.

    Il problema che mi pongo ora è quello di capire come poter legare due tabelle che abbiano in comune (cioè la chiave) una composizione di campi e non un singolo campo, cerco di spiegarmi:

    parliamo dei codici istat delle città italiane e supponiamo che un campo sia il codice provincia: 20 e uno il codice del comune:100

    la chiave con cui legare le due tabelle è il codice:20100, cioè la COMPOSIZIONE dei due campi.
    Come faccio ad inserire questa uguaglainza di campi (composti) nella INNER JOIN?

    Grazie mille

    Non è ke per caso volevi intendere questo. Hai una tabella che si chiama A in cui ha il campo codice_provincia ed il campo codice_comune

    hai poi una tabella B dove hai il campo CAP che si compone di 5 numeri dove i primi 2 individuano la provincia e devono essere = al codice_provincia mentre i rimanenti 3 riguardano il comune?

    Se è questo quello ke volevi dire, ti URGE un CORSO per poterti esprimere chiaramente! Altrimenti la soluzione è quella che ti ha postato Luca.

    Ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    180
    ....mi urge un corso...

    aspetto consigli
    Grazie

  5. #5
    la chiave con cui legare le due tabelle è il codice:20100, cioè la COMPOSIZIONE dei due campi.
    Come faccio ad inserire questa uguaglainza di campi (composti) nella INNER JOIN?
    il codice 20100 è in una variabile (cioè lo fornisci tu) oppure in un campo?

  6. #6
    Innanzitutto la inner join puoi farla solo se coinvolge 1 campo di una tabella e 1 di un'altra, non puoi farla su 1 campo di una tabella e 2 dell'altro. Quindi dobbiamo fare un prodotto cartesiano e selezionare le righe che ci servono.
    Allora, se la situazione è quella ke ti ho esposto quando hai detto ke ti urge un corso:

    chiamiamo istat la tabella dove hai il campo cod_provincia e cod_comune

    e chiamiamo prova la tabella dove hai il campo cap. OK?

    allora:

    SELECT *
    FROM istat A INNER JOIN prova B
    WHERE (A.cod_provincia=(substring(B.cap, 1, 2)) && A.cod_comune=(substring(B.cap, 3, 3)))

  7. #7
    scusa, ho sbagliato:

    SELECT *
    FROM istat A, prova B
    WHERE (A.cod_provincia=(substring(B.cap, 1, 2)) && A.cod_comune=(substring(B.cap, 3, 3)))

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    180
    ..cosa significano il 3,3 e 1,2?

    più in generale se io ho 3 tabelle (o n in generale) e voglio pescare informazioni da tutte come faccio?
    per adesso avevo 2 tabelle e con la INNER JOIN ho risolto.
    ora ne ho 3 e ho fatto (inner JOIN (inner join)) e ho risolto, ma così vi è un casino!!!!
    tutto è nato perchè ora devo legare anche una 4° tabella..........

    grazie veramnte della tua pazienza


    idea--------------------
    posso unire i due campi tipo con:
    SELECT (c.`cod_istat_prov`& c.`cod_istat_com`) AS istat
    e usare il campo istat per collegarlo in una inner join?

    come si uniscono due campi??
    non con +, non con &

  9. #9
    Originariamente inviato da gianf_tarantino
    scusa, ho sbagliato:

    SELECT *
    FROM istat A, prova B
    WHERE (A.cod_provincia=(substring(B.cap, 1, 2)) && A.cod_comune=(substring(B.cap, 3, 3)))

    substring(B.cap, 3, 3) tale funzione considera il contenuto del campo cap e a partire dal 3° elemento prende 3 caratteri (Prima di fare certe domande, comunque, potresti vedere sul manuale cosa fa una funzione!)

    Il campo CAP ha 5 caratteri. Di questi i primi 2 rappresentano la provincia e i 3 rimanenti il comune. OK?

    Allora tu hai detto o meglio mi è parso di capire che devi fare un join tra 2 tabelle.
    Una tabella (che io ho chiamato istat ma potevo darle un nome qualsiasi) ha un campo in cui vi è il codice della provincia (e tale campo l'ho chiamato cod_provincia) ed un campo in cui vi è il codice del comune (e che io ho chiamato cod_comune).
    Ora l'altra tabella che io ho chiamato prova ha il campo cap

    Il join che vuoi fare è prendere i dati delle tue tabelle in cui cod_provincia+cod_comune=cap

    Se è questo quello che intendevi io l'ho fatto con la select che sopra ti ho scritto.

    ORA, prima di passare al join tra 4, 5, 6 ....... tabelle, hai risolto questo problema qui del CAP, codice comune e codice provincia?

    Se si se vuoi essere aiutato sii MOLTO CHIARO, nel senso dì quali tabelle hai, che campi hai, ke join vuoi fare, etc....... perché stai solo facendo confusione!

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    180
    ok grazie, funziona.
    Ho cercato un po' di comandi e vorrei sapere se è possibile fare la stessa cosa usando:
    SELECT CONCAT(`cod_istat_prov`, 'cod_istat_com`) AS istat
    e usare il campo istat nella INNER JOIN come se fosse una colonna esistente davvero, facendo tipo:
    INNER JOIN comuni ON xxx.cod_istat=istat (quella virtuale)

    perchè non mi funziona?

    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.