Come creare una relazione tra 2 record di una medesima tabella

di il
34 risposte

34 Risposte - Pagina 2

  • Re: Come creare una relazione tra 2 record di una medesima tabella

    23/01/2025 - sihsandrea ha scritto:

    Uhm.... Avevi chiesto di relazionare due record della stessa tabella ma a te serve una struttura ad albero.

    Come avevo anticipato in apertura del thread non ho molte competenze e sto imparando man mano che cerco di fare qualcosa. Ho evidentemente preso la strada sbagliata all'inizio :D :D 

    Però diciamo che quello che ho mostrato nel mio ultimo post è quello che cerco di ottenere. 

    P.s. non fate caso ai record inseriti nelle tabelle....li ha popolati un collega a lavoro :D però il senso di quello che sto cercando di fare è questo.

    Ciccio

  • Re: Come creare una relazione tra 2 record di una medesima tabella

    Sono rimasto appeso...  per favore mi date una mano per riuscire in questa impresa. 

  • Re: Come creare una relazione tra 2 record di una medesima tabella

    Ciao,

    se devi realizzare una cosa di questo tipo:

    come riportato da @Alex dovrai ricorrere a chiamate ricorsive stabilendo qual'è il punto di partenza e di arrivo, cioè la profondità di ricerca da eseguire o in aventi o indietro oppure in entrambe le direzioni.

  • Re: Come creare una relazione tra 2 record di una medesima tabella

    Grazie Franco, alcune volte mi sento "incompreso"... eppure non mi pare di parlare complicato... ;-)

    Il Focus è proprio quello, ed ovviamente NON è banale, soprattutto per meno addentro ai concetti tecnici di strutturazione di DB.

    Io poi, per gestire le gerarchie, uso classi gerarchiche di dati emulando un DAL ipotetico, questo in casi specifici, velocizza molto ricerche e ricostruzione seriale delle gerarchie che sarebbero difficilmente riportabili in TempTable per generare Reportistica...

    Discorsi lunghi e complessi... passo oltre  

  • Re: Come creare una relazione tra 2 record di una medesima tabella

    Ciao a tutti,

    in realtà dovrei fare una cosa del genere, immagino con un solo livello di profondità.

    Senza fare un albero ma semplicemente creando relazioni tra le varie persone.

    Non so se mi sono spiegato.

    ciccio

  • Re: Come creare una relazione tra 2 record di una medesima tabella

    28/01/2025 - @Alex ha scritto:

    Grazie Franco, alcune volte mi sento "incompreso"... eppure non mi pare di parlare complicato... ;-)

    Il Focus è proprio quello, ed ovviamente NON è banale.

    Sei un grande... 

    hai ragione, non è così banale, però banalmente è molto semplice da realizzare. ;-)) 

    Alla fine basta comprendere che un soggetto qualsiasi dell'albero può assumere tanti status.
    Può essere un Padre ed avere figli, cugini, amanti , nipoti etc... 
    Ma da un altro punto di vista lo stesso soggetto invece di padre potrebbe essere essere un figlio, un cugino, uno zio , etc etc... 
    Sempre lo stesso soggetto da un punto di vista diverso potrebbe essere un Nonno che ha dei figli che sono padri a loro volta , avere dei nipoti dei fratelli dei cugini. Essere single ed aver adottato dei figli... in tal caso si segue la relazione legale di parentela oppure?

    Insomma, non è banale... ma compreso ciò che si vuole realizzare, risulta semplice adottare gli strumenti corretti per un corretto risultato. Sempre e solo se si vuole realizzare una struttura ad albero come sopra riportato. Qui bisogna capire un pò meglio le intenzioni di alexsgv.

  • Re: Come creare una relazione tra 2 record di una medesima tabella

    28/01/2025 - alexsgv ha scritto:

    in realtà dovrei fare una cosa del genere, immagino con un solo livello di profondità.

    Ciao, perdonami ma non mi è molto chiaro l'obbiettivo... quell' "immagino" lascia aperte tantissime porte, ipotesi etc...

    Scusa se lo chiedo... ma non sarà mica un compito, un test da svolgere?

  • Re: Come creare una relazione tra 2 record di una medesima tabella

    28/01/2025 - alexsgv ha scritto:

    Ciao a tutti,

    in realtà dovrei fare una cosa del genere, immagino con un solo livello di profondità.

    Senza fare un albero ma semplicemente creando relazioni tra le varie persone.

    Non so se mi sono spiegato.

    ciccio

    ogni freccia è una relazione... esempi matematici di relazione tra elementi dello stesso insieme sono:

    - numeri pari

    - numeri dispari

    - numeri primi

    - multipli dei numeri primi

    in questo caso hai 4 relazioni.

    per quello che vuoi fare hai 8 relazioni e nel disegno mancano le frecce verticali (padre figlio e madre figlia il tutto x 2)... 

    se vuoi solo quei livelli, creati le relazioni tra coniugi, padri, madri, figli e fratelli.

    in fase di carico alimenti le tabelle intermedie e in fase di query imposti le join che ti servono.

    per capirci: se stai creando un 730 allora dalla stessa tabella nominativi prelevi i familiari

    select * from nominativi

    inner join familiari on familiari.idcapofamiglia=nominativi.idcapofamiglia and nominativi.idcapofamiglia=1 (pippo)

    se vuoi vedere solo chi e' moglie di pippo fai la join con la tabella mogli dove mogli.idcapofamiglia=nominativi.idcapofamiglia and nominativi.idcapofamiglia=1 (pippo)

    se ti serve un solo nucleo familiare allora puoi farlo con qualche relazione ma se ti serve un albero genealogico no.

    morale della favola: crea le relazioni x descrizione

  • Re: Come creare una relazione tra 2 record di una medesima tabella

    28/01/2025 - By65Franco ha scritto:

    28/01/2025 - alexsgv ha scritto:

    in realtà dovrei fare una cosa del genere, immagino con un solo livello di profondità.

    Ciao, perdonami ma non mi è molto chiaro l'obbiettivo... quell' "immagino" lascia aperte tantissime porte, ipotesi etc...

    Scusa se lo chiedo... ma non sarà mica un compito, un test da svolgere?

    Ringrazio tutti per le informazioni che mi state fornendo. Adesso mi metto a ragionare sulle ultime cose che mi avete scritto anche in riferimento all'ultima risposta di sihsandrea

    Per rispondere a By65Franco, no non è un test/compito o altro da svolgere. è un database che vorrei usare per la mia attività di radioamatore dove sono presenti anche dei contatti a cui volevo aggiungere la funzione di relazione che ci può essere tra di loro (amici, colleghi, connazionali...etc etc) le tabelle che avevo postato sopra erano solo per spiegarmi. forse i dati erano fuorvianti ma credo non cambi niente nella logica che ci sta dietro.

    Per quanto riguarda il mio "immagino" è semplicemente che presumo si vada ad un solo livello di profondità ma ripeto, non ne sono certo perchè ad ora non ho ben capito come costruire le tabelle per ottenere ciò. l'unica cosa certa è che tutti i contatti sono in un unica tabella (tabella PERSONE_T nel mio esempio), come ritengo debba essere.

    Grazie ancora e se mi volete dare un ulteriore aiutino per agevolare la mia comprensione ve ne sarei davvero grato.

    Ciccio

  • Re: Come creare una relazione tra 2 record di una medesima tabella

    29/01/2025 - alexsgv ha scritto:

    Per rispondere a By65Franco, no non è un test/compito o altro da svolgere. è un database che vorrei usare per la mia attività

    Ciao, scusa ancora del sospetto, penso legittimo, era solo per correttezza nei confronti di tutti.

    Persistono tante mie perplessità che dipendono dalla mia capacità di comprendere bene il tuo quesito.

    Quindi:

    1. allo stato attuale abbiamo una tabella PERSONE_T che contiene tutti i contatti
    2. si vuole mettere in relazione dei records della tabella con se stessa per ottenere un certo risultato
      1. per risultato si intende: stabilire se tra un record della tabella si possono legare altri records della stessa che possono avere una certa relazione

    -

    Concentriamoci sul risultato che si vuole ottenere e stabiliamo alcune cose:

    1. come si avvia il processo ?
      1. si vuole interrogare un singolo record ?
        1. si vuole conoscere se esistono per tale record altri records che possono avere una relazione ?
      2. quali sono le condizioni di relazione ?
        1. hai già definito quali  tipi di relazioni devono essere verificate atte a soddisfare una certa relazione ?
    2. Come si chiude il processo ?
      1. si devono visualizzare i risultati ottenuti per :
        1. un singolo record interrogato ?
        2. oppure per tutti i records riepilogando tutte le relazioni che esistono a livello di tabella ?

    -

    Proverei con esempi pratici e dati reali a mettere in fila queste informazioni. 
    Personalmente mi aiuterebbe a mettere ben a fuoco il quesito e magari fornire delle dritte un pò più mirate. 

  • Re: Come creare una relazione tra 2 record di una medesima tabella

    29/01/2025 - alexsgv ha scritto:

    Per rispondere a By65Franco, no non è un test/compito o altro da svolgere. è un database che vorrei usare per la mia attività di radioamatore dove sono presenti anche dei contatti a cui volevo aggiungere la funzione di relazione che ci può essere tra di loro (amici, colleghi, connazionali...etc etc) le tabelle che avevo postato sopra erano solo per spiegarmi. forse i dati erano fuorvianti ma credo non cambi niente nella logica che ci sta dietro.

    ...

    Ciccio

    Ho preso la licenza di radioamatore nel 87... all'ora giovanissimo, quella completa di telegrafia per capirci, e mi sono sempre costruito antenne direzionali ed amplificatori HF 20-15 e 10m da solo... 

    Ora sono 20anni che non accendo più la radio, un vecchio Kenwood... ma mi hai fatto venire un po si nostalgia soprattutto con i DX worldwide...

    Scusate l'OT... ma era la mia infanzia.

  • Re: Come creare una relazione tra 2 record di una medesima tabella

    29/01/2025 - @Alex ha scritto:

    29/01/2025 - alexsgv ha scritto:

    Per rispondere a By65Franco, no non è un test/compito o altro da svolgere. è un database che vorrei usare per la mia attività di radioamatore dove sono presenti anche dei contatti a cui volevo aggiungere la funzione di relazione che ci può essere tra di loro (amici, colleghi, connazionali...etc etc) le tabelle che avevo postato sopra erano solo per spiegarmi. forse i dati erano fuorvianti ma credo non cambi niente nella logica che ci sta dietro.

    ...

    Ciccio

    Ho preso la licenza di radioamatore nel 87... all'ora giovanissimo, quella completa di telegrafia per capirci, e mi sono sempre costruito antenne direzionali ed amplificatori HF 20-15 e 10m da solo... 

    Ora sono 20anni che non accendo più la radio, un vecchio Kenwood... ma mi hai fatto venire un po si nostalgia soprattutto con i DX worldwide...

    Scusate l'OT... ma era la mia infanzia.

    E' un mondo che mi ha sempre affascinato. Io sono un amante dell'autocostruzione di antenne. Nel tempo mi sono dedicato alla costruzione di yagi per le VHF fino ad arrivare alle magloop sia per radioascolto (tagliano come le bestie) che per la trasmissione. nell'ultimo periodo invece mi sono buttato sulle omnidirezionali, nello specifico nelle endfed. a casa ho un TX da 100W ma lo uso pochissimo, invece uso un portatile FT817 da 5W che porto nello zaino su in montagna e con quello mi diverto con la mia fedele end fede montata su stilo in fibra di vetro. sta tutto nello zaino. Adoro l'idea di avere poche cose ( anche di Watt in antenna) ma riuscire comunque a strappare un contatto, in più sto anche in mezzo alla natura. 

    Scusate anche il mio OT.

  • Re: Come creare una relazione tra 2 record di una medesima tabella

    29/01/2025 - By65Franco ha scritto:

    29/01/2025 - alexsgv ha scritto:

    Per rispondere a By65Franco, no non è un test/compito o altro da svolgere. è un database che vorrei usare per la mia attività

    Ciao, scusa ancora del sospetto, penso legittimo, era solo per correttezza nei confronti di tutti.

    Persistono tante mie perplessità che dipendono dalla mia capacità di comprendere bene il tuo quesito.

    Quindi:

    1. allo stato attuale abbiamo una tabella PERSONE_T che contiene tutti i contatti
    2. si vuole mettere in relazione dei records della tabella con se stessa per ottenere un certo risultato
      1. per risultato si intende: stabilire se tra un record della tabella si possono legare altri records della stessa che possono avere una certa relazione

    -

    Concentriamoci sul risultato che si vuole ottenere e stabiliamo alcune cose:

    1. come si avvia il processo ?
      1. si vuole interrogare un singolo record ?
        1. si vuole conoscere se esistono per tale record altri records che possono avere una relazione ?
      2. quali sono le condizioni di relazione ?
        1. hai già definito quali  tipi di relazioni devono essere verificate atte a soddisfare una certa relazione ?
    2. Come si chiude il processo ?
      1. si devono visualizzare i risultati ottenuti per :
        1. un singolo record interrogato ?
        2. oppure per tutti i records riepilogando tutte le relazioni che esistono a livello di tabella ?

    -

    Proverei con esempi pratici e dati reali a mettere in fila queste informazioni. 
    Personalmente mi aiuterebbe a mettere ben a fuoco il quesito e magari fornire delle dritte un pò più mirate. 

    hai perfettamente ragione. butto giù le risposte ai tuoi quesiti e metto anche degli esempi concreti in modo da ridurre al minimo le ambiguità. 

    grazie ancora.

    Ciccio

  • Re: Come creare una relazione tra 2 record di una medesima tabella

    29/01/2025 - alexsgv ha scritto:

    hai perfettamente ragione. butto giù le risposte ai tuoi quesiti e metto anche degli esempi concreti in modo da ridurre al minimo le ambiguità

    no no no... non ho ragione ;-) ... tranquillo. Il mio pensiero va a questa interpretazione che porta veramente a poco poco.
    Mi spiego con un esempio banale che se rappresenta la tua idea, posso anticiparti che non è il massimo ed è molto limitata come soluzione. Personalmente non lo farei mai ;-)

    Se ho una tabella di contatti di questo tipo:

    Posso creare una tabella per abbinare delle descrizioni al tipo di relazione tra i records che è questa:

    Adesso creo la relazione del tipo:

    Passiamo a creare una query che raccogli le informazioni e le espone per tutti i records sopra inseriti con le relative descrizioni di parentela (per fare un esempio prendiamo in esame una Relazione di Parentela ma il tipo di relazione può essere qualsiasi altra cosa) 

    Adesso andiamo a vedere cosa restituisce la Query:

    -

    • Bene, il risultato è corretto. Otteniamo che :
      • Pippo è Amico di Topolino
      • Tip eTap sono Nipoti di Topolino
      • Qui Quo e Qua sono nipoti di Paperino
    • La logica lascia a desiderare.
    • Puoi fare solo un tipo di relazione (in questo caso di tipo parentale).
    • Manca di flessibilità. Per esempio non puoi attribuire una relazione di parentela di tipo Zio per i contatti Nipoti ... per esempio Paperino non può risultare Zio in quanto ai Nipoti Qui Quo Qua hai già associato che sono dei Nipoti di Paperino, etc etc.
    • Risultato; non è un sistema/metodo circolare ma unidirezionale.

    .

    Personalmente non farei mai una del genere, almeno che il tuo scopo sia ben diverso da quello che ho interpretato. Da qui nascono i miei dubbi e mi scuso se ho insistito nel chiedere delucidazioni.  Chiedo venia  ;-) 

  • Re: Come creare una relazione tra 2 record di una medesima tabella

    Anche io avevo provato a costruire un DB per registrare i dati di famiglia (albero genealogico).

    Le relazioni che avevo pensato sono come sotto:

    tutte le persone vengono ad essere registrate come persone

    solo chi diventa padre finisce anche in tabella padre / idem per madre (acquisisce un id padre o id madre)

    però è difficile andare indietro nel tempo...

Devi accedere o registrarti per scrivere nel forum
34 risposte