Valori uguali in tabelle diverse

di il
16 risposte

Valori uguali in tabelle diverse

Ciao a tutti.
Non riesco a risolvere questo problema.
Ho due tabelle, Alberghi(Codice, Indirizzo, Città, Telefono) e trasferte(NumeroTrasferta, CodiceAlbergo, Città).
La chiave primaria di alberghi è Codice, quella di trasferte è NumeroTrasferta.
Le due tabelle sono collegate con una relazione 1:N.
Problema: Quando inserisco una trasferta devo far in modo che la città sia uguale a quella dell'albergo selezionato!
Come posso impostare questo vincolo?
Grazie a chiunque mi risponda.

16 Risposte

  • Re: Valori uguali in tabelle diverse

    Che applicazione usi? Avresti dovuto postare nella sezione apposita.
    Riguardo la normalizzazione (in cui si discute in questa sezione del forum), la tabella Trasferte non deve contenere il campo Città.
  • Re: Valori uguali in tabelle diverse

    OsvaldoLaviosa ha scritto:


    Che applicazione usi? Avresti dovuto postare nella sezione apposita.
    Scusate,
    ero convinto di averlo postatnto in Access.

    OsvaldoLaviosa ha scritto:


    Riguardo la normalizzazione (in cui si discute in questa sezione del forum), la tabella Trasferte non deve contenere il campo Città.
    E' giustissimo, ma devo farle così!
  • Re: Valori uguali in tabelle diverse

    antcru ha scritto:


    Come posso impostare questo vincolo?
    Il tuo problema è verificare che questa condizione persista, oppure gestire la valorizzazione predefinita del campo?
  • Re: Valori uguali in tabelle diverse

    antcru ha scritto:


    Problema: Quando inserisco una trasferta devo far in modo che la città sia uguale a quella dell'albergo selezionato!
    Secondo me dipende dall'approccio che utilizzi. Se inserendo una trasferta inserisci prima la città, i codici albergo selezionabili devono essere quelli degli alberghi in quella città e per farlo ti basta una select sulla tabella Alberghi.
    Se invece inserisci prima l'albergo, il campo città non ti serve nella tabella trasferte. La ottieni con una join tra le due.

    P.S: spero che il tuo campo [Città] non abbia davvero la a accentata...
  • Re: Valori uguali in tabelle diverse

    antcru ha scritto:


    Quando inserisco una trasferta devo far in modo che la città sia uguale a quella dell'albergo selezionato

    antcru ha scritto:


    E' giustissimo, ma devo farle così!
    Se imposti su Trasferte.CodiceAlbergo una "casella combinata" e ci metti tutte le colonne da Alberghi, ti accorgerai tu stesso che mentre stai selezionando CodiceAlbergo, ti porti appresso automaticamente la Città.
  • Re: Valori uguali in tabelle diverse

    Alka ha scritto:



    Il tuo problema è verificare che questa condizione persista, oppure gestire la valorizzazione predefinita del campo?
    Io vorrei che quando scrivo nel campo città della tabella Trasferte mi dia errore se il valore è diverso dalla città dell'albergo scelto

    OsvaldoLaviosa ha scritto:


    Se imposti su Trasferte.CodiceAlbergo una "casella combinata" e ci metti tutte le colonne da Alberghi, ti accorgerai tu stesso che mentre stai selezionando CodiceAlbergo, ti porti appresso automaticamente la Città.

    Sgrubak ha scritto:


    Secondo me dipende dall'approccio che utilizzi. Se inserendo una trasferta inserisci prima la città, i codici albergo selezionabili devono essere quelli degli alberghi in quella città e per farlo ti basta una select sulla tabella Alberghi.
    Se invece inserisci prima l'albergo, il campo città non ti serve nella tabella trasferte. La ottieni con una join tra le due.
    Usando le maschere saprei come farlo, volevo un vincolo a livello di tabella

    Sgrubak ha scritto:


    P.S: spero che il tuo campo [Città] non abbia davvero la a accentata...
    Certo che no
  • Re: Valori uguali in tabelle diverse

    antcru ha scritto:


    Usando le maschere saprei come farlo, volevo un vincolo a livello di tabella
    Non si tratta di un "vincolo", ma di una impostazione progettuale. La casella combinata si può progettare anche in tabella.
  • Re: Valori uguali in tabelle diverse

    antcru ha scritto:


    Usando le maschere saprei come farlo, volevo un vincolo a livello di tabella
    È che proprio non ha senso di esistere quel campo... Non capisco perché tu voglia obbligatoriamente inserirlo, per poi fare un controllo inutile dato che riesci ad estrapolarlo con una JOIN.

    antcru ha scritto:


    Sgrubak ha scritto:


    P.S: spero che il tuo campo [Città] non abbia davvero la a accentata...
    Certo che no
    Ottimo
  • Re: Valori uguali in tabelle diverse

    OsvaldoLaviosa ha scritto:


    Non si tratta di un "vincolo", ma di una impostazione progettuale. La casella combinata si può progettare anche in tabella.
    Anche facendo la casella combinata in tabella mi mostra tutte le città presenti nella tabella Alberghi, non solo la città relativa all'albergo scelto.

    Sgrubak ha scritto:


    È che proprio non ha senso di esistere quel campo... Non capisco perché tu voglia obbligatoriamente inserirlo, per poi fare un controllo inutile dato che riesci ad estrapolarlo con una JOIN.
    Lo so, non dirmi niente, ma i campi delle tabelle non li posso modificare, sono quelli!
  • Re: Valori uguali in tabelle diverse

    Temo tu sia in un vicolo cieco... Non conosco Access così bene, ma credo che quel che cerchi, non si possa fare.
    Mi spiace non poterti aiutare, ma resto in ascolto se qualcuno tira fuori il coniglio dal cilindro.
  • Re: Valori uguali in tabelle diverse

    antcru ha scritto:


    Anche facendo la casella combinata in tabella mi mostra tutte le città presenti nella tabella Alberghi, non solo la città relativa all'albergo scelto.
    Non ti seguo. Di quale tabella stai parlando? Elenca almeno 5 record e spiega con un esempio dov'è il problema.

    antcru ha scritto:


    Ho due tabelle, Alberghi(Codice, Indirizzo, Città, Telefono) e trasferte(NumeroTrasferta, CodiceAlbergo, Città).
    Considerando che il campo Città ha ripetitività sistematica in tabella Alberghi, devi avere anche una tabella Città uno-a-molti Alberghi. Anzi, a voler fare le cose per bene la tabella Città (o Comuni) deve avere i seguenti campi:
    IDComune (PK)
    Comune
    CAP
    Provincia
    Regione
    Stato (se necessario)

    Nella tabella Alberghi, cambia il campo Città con IDComune, quindi predisponi apposita casella combinata.
    Nella tabella Trasferte metti casella combinata su CodiceAlbergo con una query che coinvolga le tabelle Alberghi e Comuni, là dove tra le tante colonne ci metti proprio il campo Comuni.Comune.

    P.S.: è vero che nel nominare tabelle e campi è meglio evitare caratteri speciali, quindi anche quelli accentati, ma io ho vari database con la tabella Città e i campi IDCittà e Città. Non ho avuto mai problemi.
  • Re: Valori uguali in tabelle diverse

    Sgrubak ha scritto:


    Temo tu sia in un vicolo cieco... Non conosco Access così bene, ma credo che quel che cerchi, non si possa fare.
    Mi spiace non poterti aiutare, ma resto in ascolto se qualcuno tira fuori il coniglio dal cilindro.
    Grazie cmq per l'interessamento

    OsvaldoLaviosa ha scritto:



    Considerando che il campo Città ha ripetitività sistematica in tabella Alberghi, devi avere anche una tabella Città uno-a-molti Alberghi. Anzi, a voler fare le cose.......
    Capisco che è dura da digerire, ma il problema è che non devo fare rifare tutta la progettazione, che giustamente come dite voi andrebbe fatta normalizzata e con tutti i crismi, ma io ho solo quelle due tabelle, e devo lavorare solo con quelle due .
  • Re: Valori uguali in tabelle diverse

    Se puoi modificare le tabelle : le normalizzi e risolvi il problema alla fonte.
    Se puoi modificare le tabelle ma NON vuoi normalizzarle : ricavi il valore della città (Tabella Trasferte) tramite l'ID_Albergo, come ti è già stato suggerito (ovvero assegni il valore del campo Città ad una query del tipo 'Select Città from Alberghi where Id_Albergo = [Trasferte].[Id_Albergo]'). Ovviamente si tratta di una pork...ata.
    Se non puoi modificare le tabelle : non puoi neanche imporre un vincolo a livello di tabelle (rendendo inutile la tua richiesta).
  • Re: Valori uguali in tabelle diverse

    max.riservo ha scritto:


    Se puoi modificare le tabelle : le normalizzi e risolvi il problema alla fonte.
    Se puoi modificare le tabelle ma NON vuoi normalizzarle : ricavi il valore della città (Tabella Trasferte) tramite l'ID_Albergo, come ti è già stato suggerito (ovvero assegni il valore del campo Città ad una query del tipo 'Select Città from Alberghi where Id_Albergo = [Trasferte].[Id_Albergo]'). Ovviamente si tratta di una pork...ata.
    Se non puoi modificare le tabelle : non puoi neanche imporre un vincolo a livello di tabelle (rendendo inutile la tua richiesta).
    La pork..ata(lo so che lo è) la posso fare anche nelle proprietà dei campi della tabella o solo nelle maschere?? Se se la posso fare nelle proprietà della tabella lo faccio nel criterio valido se?(ma non me lo fa fare!)
Devi accedere o registrarti per scrivere nel forum
16 risposte