Realizzazione Query

di il
34 risposte

Realizzazione Query

Buongiorno,

è ormai un po' di giorni che mi scervello su come poter risolvere il seguente problema e non ne vengo proprio fuori; magari qualcuno riesce a farmi voltare pagina.

Tabella1(Prodotti), chiave primaria CodProdotto, 
contiene tutte le informazioni relative al prodotto

Tabella3(pkDescr), chiave primaria assente, campi presenti CodProdotto e pk_id 
Nella sua confezione finale il prodotto con CodProdotto 0001 e nome prodotto "Maglia” avrà la un certo determinato packaging tra cui la “scatola” che viene identificata come codice 10 nel campo pk_id, poi avrà l'etichetta cod 20 di pk_id , poi avrà il foglio descrittivo cod 30 di pk_id e infine una busta cod 40 di pk_id;, e via dicendo per gli altri prodotti

Tabella4(pkProd), chiave primaria pk_id, altri campi presenti pk_articolo, pk_materiale, pk_codice, pk_conferimento. 
Tabella creata appositamente per poter relazionare una sola volte il campo pk_id alle sue descrizioni, ad esempio per l'articolo "scatola" con codice 10 pk_id , pk_articolo = scatola, pk_materiale = cartone teso, pk_codice = 21, pk_conferimento = carta.

Purtroppo non riesco a relazionare le tabelle e ad elaborare la struttura di base per arrivare dove voglio ovvero creare una query che mi permetta, in un file di stampa unione di word, di avere un foglio con riepilogato il tutto:
Codice prodotto: pk_id1 + descrizioni varie; pk_id2 + descrizioni varie; pk_id3 + descrizioni varie; pk_id4 + descrizioni varie.
Sono arrivato vicino a una soluzione che purtroppo mi crea 4 fogli differenti in cui l'unico valore a cambiare è per l'appunto il pk_id e le relative descrizioni.

Si vorrebbe invece fare in modo di avere un solo foglio con tutte e quattro le parti di packaging.

Per questo motivo si crea la Tabella 2
Tabella2(pkRela), chiave primaria CodProdotto, altri campi pk_id1, pk_id2, pk_id3, pk_id4;
La tabella contiene il packaging del prodotto; per esempio il prodotto con codice 0001, nella sua confezione finale avrà la scatola che viene identificata come codice 10 nel campo pk_id1 , poi avrà l'etichetta cod 20 di pk_id2 , poi avrà il foglio descrittivo cod 30 pk_id3 e infine una busta cod 40 pk_id4; In pratica quindi si decide di mettere tutti i pk_id in fila, relazionati allo stesso CodProdotto.

Purtroppo qui mi fermo, una volta creata questa tabella ed essermi trovato di fronte a come dover creare le relazioni ed elaborare la query mi si è formato un uroboro nel cervello e stop.

.…Mi sa che sto sbagliando qualcosa….
Come posso procedere?

34 Risposte

  • Re: Realizzazione Query

    Forse si riesce a capire, quindi aiutarti, se alleghi un'immagine della finestra delle Relazioni

  • Re: Realizzazione Query

    Ho ricreato il database da zero con solo queste tabelle per ripartire da zero anche con la struttura delle relazioni, provate in tutte le combinazioni che mi venivano in mente :facepalm: 
    allego immagine, senza relazioni appositamente per non creare ulteriore confusione e disagio.


  • Re: Realizzazione Query

    Sarà opportuno che rinomini sia le tabelle che i campi con nomi significativi.

  • Re: Realizzazione Query

    In un database relazionali, alla fine sono proprio le relazioni che sono importanti e che fanno da guida nella sua creazione. Se ce le togli praticamente ci stai mostrando il nulla.

    Senza considerare che la nuova struttura non ha alcun senso. Ne logico, ne funzionale.

    Quanti database funzionanti hai realizzato?

    Qual è la tua conoscenza del vba, delle macro e del sql?

    Se questo è il primo database, vuoi creare una cosa che al momento è fuori dalla tua portata.

  • Re: Realizzazione Query

    Infatti, in realtà non hai creato il db da zero come dici. Quello non è un db.

    E la spiegazione non aiuta certo, in questa frase

    Nella sua confezione finale il prodotto con CodProdotto 0001 e nome prodotto "Maglia” avrà la un certo determinato packaging tra cui la “scatola” che viene identificata come codice 10 nel campo pk_id, poi avrà l'etichetta cod 20 di pk_id , poi avrà il foglio descrittivo cod 30 di pk_id e infine una busta cod 40 di pk_id;, e via dicendo per gli altri prodotti

    non si capisce proprio niente  

  • Re: Realizzazione Query

    @albino, tieni presente questo ‘assioma’ 

    spiegazione confusa = idee confuse = soluzione confusa

    i termini/le parole sono importanti perche' rappresenta un concetto. 

    un termine ‘generico’ rappresenta un concetto ‘generico’

    una ‘bella ragazza’ e' un termine generico, 

    la ‘stra topolona del piano di sotto’ e' molto piu' esplicativo ;-)

    tabelle DEVONO avere un nome significativo, le colonne (dette anche attributi della tabella) DEVONO avere un nome significativo. 

    Ogni tabella RAPPRESENTA un INSIEME di oggetti. 

    Un INSIEME NON HA ordine. 

    Quindi ti serve:

    1) un modo per identificare in modo UNIVOCO ogni oggetto dell'insieme (la primary key) 

    2) un modo per mettere in ‘relazione’ oggetti tra tabelle diverse (le foreign keys)

    3) un modo per ‘operare’ (selezionare, aggiungere, togliere, ordinare, filtrare) sulle tabelle & relazioni (l'algebra relazionale) 

    PRIMA di pasticciare con Access DEVI avere chiaro questi concetti. 

    NON “sono utili ma non fondamentali”, 

    DEVI!

    Questo e' quello che Lev Landau chiamava ‘il minimo teorico’. 

    Solo che nel suo caso, sapere ‘il minimo teorico’ voleva dire essere ad un passo da Premio Nobel, in questo caso basta Wikipedia :-) 

  • Re: Realizzazione Query

    Grazie per l'interesse.
    Mi sono reso conto della castronata detta; 
    Rielaboro il tutto;

    Le relazioni riportati nell'immagine sono DUE percorsi diversi, uniti in una unica immagine per ragioni di comodità

    1)PERCORSO1: Tab1-Tab2-Tab4

    2)PERCORDO2: Tab1-Tab3-Tab4

    -PERCORSO 2
    Tab1 Prodotti_Descrizione : contiene i dati relativi ai prodotti, in questo caso il CodProdotto identifica univocamente il prodotto.

    Tab3 Prodotti_MoltiProdottoPiuUnSingoloPackaging: in questa tabella non esiste una chiave univoca, sarebbe stata una eventuale numerazione automatica, i dati che vi sono inseriti sono i prodotti, tramiti il loro CodProdotto, e il packaging relativo; si dispone che se un prodotto ha 4 pezzi di packaging diversi, il suo CodProdotto compaia per l'appunto 4 volte. Per esempio il prodotto 
    CodProdotto=0001; pk_id = 10
    CodProdotto=0001; pk_id = 100
    CodProdotto=0001; pk_id = 1000
    CodProdotto=0001; pk_id = 10000

    Tab4 Packaging_Descrizione : Questa tabella contiene i packaging definiti univocamente tramite il campo "pk_id", gli altri campi servono a descriverne la tipologia; per esempio il packaging con 

    pk_id = 10; pk_articolo = scatola ; pk_materiale = cartone ; pk_codice = 21 ; pk_conferimento = carta.
    pk_id = 100 ; pk_articolo = etichetta; pk_materiale = PET ; pk_codice = 1 ; pk_conferimento = plastica.
    pk_id = 1000 ; pk_articolo = foglio desrittivo; pk_materiale = carta ; pk_codice = 202 ; pk_conferimento = carta.
    pk_id = 10000 ; pk_articolo = busta ; pk_materiale = LD ; pk_codice = 4 ; pk_conferimento = plastica.

    Si relazionano queste tre tabelle tramite le relazioni del Percorso 2 (Tab1-Tab3-Tab4) 

    Risultato che si vuole raggiungere: dopo aver creato un file di stampa unione, compilato in funzione del CodProdotto univoco dei prodotti, in maniera da avere solo un risultato per ogni singolo CodProdotto, alla voce Packaging si vorrebbe portare tutti gli articoli correlati al quel prodotto, per esempio:

    CodProdotto:
    0001; 

    Nome:
    a

    Packaging:
    scatola - cartone - 21 - carta
    etichetta - PET - 1 - plastica
    ecc - ecc - ecc - ecc 
    ecc. - ecc. - ecc. - ecc.

    -PERCORSO 1

    Poiché il percorso 2 non aiuta a raggiungere il risultato voluto, si opta per una via alternativa, ovvero quella del percorso 1, nel quale si va a creare una nuova tabella Tab2.

    Tab2 Prodotti_SingoloProdottoPiuTuttoSuoPackaging : Contiene il prodotti identificati univocamente con il loro CodProdotto definito nella Tab1, e contiene sullo stesso record i dati relativi ai suoi vari packaging, ad esempio per il prodotto con 
    CodProdotto 0001 si ha scatola pk_id1 = 10, poi avrà l'etichetta pk_id2 = 100 , poi avrà il foglio descrittivo pk_id3 = 1000 e infine una busta pk_id4 = 10000 ; In pratica quindi si decide di mettere tutti i pk_id in fila, relazionati allo stesso CodProdotto.

    Purtroppo anche il percorso 1 (Tab1-Tab2-Tab4) non ha aiutato a comprendere come fare a raggiungere l'obiettivo prefissato.

    È possibile arrivarci? Se si, come potrei fare?

    Grazie mille
    Ciao

  • Re: Realizzazione Query

    M le altre 4 tabelle dove sono? 

    Intendo quelle relative ad articolo, materiale, codice e conferimento. 

    Le tabelle 2 e 4 non hanno alcun senso. 

  • Re: Realizzazione Query

    Stai suggerendo di creare altre quattro tabelle:

    TabArticolo
    TabMateriale
    TabCodice
    TabConferimento

    Come da immagine?


    Grazie mille
    Ciao

  • Re: Realizzazione Query

    Sarebbe meglio riuscire ad avere la corretta percezione della tua conoscenza della normalizzazione di un database.

    Questo perché altrimenti si espongono concetti basilari che però se non lo sono risulta complicato affrontare la ristrutturazione per approssimazioni successive.

    Il suggerimento dovrebbe essere di metodo, ma è ovvio che per essere colto serve essere allineati, pena dover dettare lo sviluppo.

    Io non ho ben capito su che linea siamo.

  • Re: Realizzazione Query

    Autodidatta;

    prendendo da wikipedia: 
    la normalizzazione è un procedimento volto all'eliminazione della ridondanza informativa e del rischio di incoerenza del database. 
    -> fin qua ci sono.

    Esistono vari livelli di normalizzazione (forme normali) che certificano la qualità dello schema del database.
    -> non conosco i vari livelli di normalizzazione

    Questo processo si fonda su un semplice criterio: se una relazione presenta più concetti tra loro indipendenti, la si decompone in relazioni più piccole, una per ogni concetto. Questo tipo di processo non è sempre applicabile in tutte le tabelle, dato che in alcuni casi potrebbe comportare una perdita d'informazioni.
    -> è forse quello che stava cercando di suggerirmi fratac ?

    La voglia di imparare c'è, purtroppo il discorso è sempre quello come per me presumo per molte altre persone…manca il tempo…
    imparo man mano quello gli argomenti che mi trovo a dover affrontare con una base dalle fondamenta “lacunose”.
    poi quello che riesco a imparare cerco di sfruttarlo al meglio delle mie limitate possibilità….poco a poco…

    [edit]…..quindi il risultato prefissato si potrebbe raggiungere….non è impossibile…..questo è già di ottimo auspicio[/edit]


    Grazie mille

    Ciao

  • Re: Realizzazione Query

    Se ti manca il tempo purtroppo non potrai imparare bene. È così in tutte le attività umane, non esistono scorciatoie e non si fanno miracoli.

    Hai ripetuto quello che c'è scritto su wikipedia ma l'hai compreso? Se l'hai compreso lo puoi applicare descrivendo nuovamente e meglio il tuo problema, altrimenti non si va avanti.

    Secondo me ti devi mettere a studiare facendo esercizi con esempi molto basilari, per poi passare, piano piano, dopo qualche mese, a problemi più complessi.

    Questo thread non ha molto senso.

  • Re: Realizzazione Query

    Ma posso capire per te che significato hanno tutti quei campi denominati con pk?

    Che tipo di dati dovrannno contenere?

    E all atto pratico a che cosa servono?

    Conosci il significato di chiave primaria e chiave esterna? E come si usano?

    Perché da come hai creato il tutto sembra proprio che stai digitando cose a caso sulla tastiera, cercando di applicare concetti che hai letto ma non compreso.

    Qui ul pproblema non è creare una query, per il semplice motivo che non c è nessun dato concreto da ricercare. In questa struttura non ci potrà mai essere nessun dato. Nemmeno mettendoli a casaccio.

    ti posto un esempio di uno schema di un database (uno dei tanti schemi o strutture possibili) che fa quello che cerchi di realizzare.

  • Re: Realizzazione Query

    @Albino, uno non si mette a guidare una Bugatti Chiron se sa solo andare in Ape Piaggio (a parte Valentino ;-) ). Si ammazza e basta.

    Se non ti studi i concetti fondamentali (niente di stratosferico, con un buon libro, qualche giorno/settimana) non andrai molto lontano. 

    Contento tu!

Devi accedere o registrarti per scrivere nel forum
34 risposte