Riunire più risultati nello stesso campo

Discussioni sulle caratteristiche di database
Rispondi
Avatar utente
Rebeltag
Messaggi: 9
Iscritto il: mercoledì 9 gennaio 2013, 23:47

Riunire più risultati nello stesso campo

Messaggio da Rebeltag »

Stò facendo un personale archivio dei miei cd musicali, per ogni interprete ho creato una tabella con i campi ID come chiave primaria e Solista che poi collego al campo Solista della tabella Composizione, in modo da non dovere scrivere per esteso il nome negli inserimenti e anche per render più leggero il db e le query, però per le opere liriche si pone il problema per il campo Solisti dato che dovrei inserire più ID assieme, esiste un modo per riunirli nello stesso campo e non doverli scrivere per esteso oppure di usare un campo per ogni solista?

Grazie

EDITATO: scusate la domanda stupida, il tipo Memo[LONGVARCHAR] memorizza solo i dati effettivamente immessi a prescindere dalla lunghezza (come Testo[VARCHAR]) ma permette di inserire più di 255 byte?
ApacheOpenOffice 3.4.1 su Windows XP sp3

Ciò che ho sempre invidiato di Belgarath è la sua possibilità di trasformasi in lupo...
Avatar utente
UTPiovene
Messaggi: 232
Iscritto il: giovedì 16 dicembre 2010, 11:24
Località: Piovene Rocchette per 36 ore alla settimana

Re: Riunire più risultati nello stesso campo

Messaggio da UTPiovene »

Per quel poco che ne capisco ogni solista avrà il suo ID, che poi può essere collegato all'ID dell'opera
Avrai la tabella delle opere (ognuna col proprio ID), poi la tabella dei solisti, con un campo per il proprio ID ed un campo ID dell'opera per fare il collegamento
In questo modo ogni opera potrà avere più solisti se è necessario
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Riunire più risultati nello stesso campo

Messaggio da Gaetanopr »

Se ho capito bene tu hai un problema di relazione molti a molti nel senso che un solista puo' avere più opere e un'opera può avere più solisti...correggimi se sbaglio. Se è così devi crearti una tabella di collegamento tra le due tabelle dove le chiavi primarie delle due tabelle(solisti-opere) diventano chiavi esterne della terza tabella.
Io ti allego un db con la tabella di collegamento che ho chiamato dettagli opera con alcuni esempi.
Se va bene devi inserire i vari solisti nella tabella solisti , poi le opere nella tabella opere con tutti i vari campi tranne il campo idsolista che andrà collegato all'idopera nella tabella di collegamento dettagliopera.
Spero di aver capito bene il tuo quesito.
Allegati
Nuovo database.odb
(5.5 KiB) Scaricato 127 volte
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Avatar utente
Rebeltag
Messaggi: 9
Iscritto il: mercoledì 9 gennaio 2013, 23:47

Re: Riunire più risultati nello stesso campo

Messaggio da Rebeltag »

Grazie per il tempo che mi avete dedicato per le risposte, non me ne intendo ma credo che sia un database abbastanza complesso con quasi tutte relazioni molti a molti, lo stò usando anche a scopo personale per imparare qualcosa sui database.

Avete afferrato quello che è il mio problema e le proposte suggerite funzionano però effettuando una ricerca mi ritrovo con tante righe con il titolo dell'opera ripetuto per quanti sono i solisti, sarebbe possibile invece avere una sola riga formata da due celle una con il nome dell'opera e di fianco un'altra cella con all'interno tutti i nomi dei solisti collegati a quest'opera (temo sia impossibile ma essendo incompetente non ne ho certezza), in alternativa sarebbe possibile ottenere come risultato sempre una sola riga con la prima cella il titolo dell'opera e di seguito tante celle per quanti sono i solisti? (oppure con i nomi dei solisti incolonnati ma senza avere la ripetizione del titolo dell'opera)

Avete gia capito ma espongo in maniera più dettagliata quello che vorrei fare, quello che dovrei archiviare sono dati del genere:

C'è la Sinfonia n 1 di Mahler che è stata eseguita da diversi direttori, ogni direttore collabora con più orchestre, per cui mi troverò ad avere uno scenario del genere

Sinfonia nr 1 diretta da Bernstein con i Wiener Philharmoniker voce solista Tizio
Sinfonia nr 1 diretta da Karajan con i Berliner Philharmoniker voce solista Tizio
Sinfonia nr 1 diretta da Abbado con i Wiener Philharmoniker Voce solista Caio
ecc...

ed è così per quasi ogni brano perchè il repertorio è quello, solisti, direttori e orchestre anche, per cui anche se non fanno tutti le stesse cose tutti fanno molte cose in comune.
ApacheOpenOffice 3.4.1 su Windows XP sp3

Ciò che ho sempre invidiato di Belgarath è la sua possibilità di trasformasi in lupo...
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Riunire più risultati nello stesso campo

Messaggio da Gaetanopr »

Per quanto ne so io credo che sia difficile ottenere quanto vuoi tu, purtroppo con le relazioni molti a molti ci sono questi inconvenienti però io non sono un esperto quindi magari qualcun altro potrà consigliarti meglio come impostare i dati per i tuoi scopi.Una soluzione alternativa
Rebeltag ha scritto:(oppure con i nomi dei solisti incolonnati ma senza avere la ripetizione del titolo dell'opera)
potrebbe essere quello di collegare il database ad un foglio calc e da li puoi fare tutte le modifiche e formattazioni a tuo piacere come eliminare le righe ripetute.
Se trovi un modo migliore fai sapere
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Riunire più risultati nello stesso campo

Messaggio da vladko »

Bene, uno esercizio interessante che dimostra come è difficile spiegare quello che si vuole fare:D
ora, le risposte sono proprio nelle tue domande e nelle risposte che sono fino ad ora.
ora, vediamo insieme come arrivare alla soluzione.

che cosa vuoi fare????
Rebeltag ha scritto:Stò facendo un personale archivio dei miei cd musicali,...
e quale è il problema???
Rebeltag ha scritto:...C'è la Sinfonia n 1 di Mahler che è stata eseguita da diversi direttori, ogni direttore collabora con più orchestre, per cui mi troverò ad avere uno scenario del genere

Sinfonia nr 1 diretta da Bernstein con i Wiener Philharmoniker voce solista Tizio
Sinfonia nr 1 diretta da Karajan con i Berliner Philharmoniker voce solista Tizio
Sinfonia nr 1 diretta da Abbado con i Wiener Philharmoniker Voce solista Caio
ecc...

ed è così per quasi ogni brano perchè il repertorio è quello, solisti, direttori e orchestre anche, per cui anche se non fanno tutti le stesse cose tutti fanno molte cose in comune.
quindi la soluzione sarà

tbsinfonia
  • idsinfonia
    sinfonia
tbdirettore
  • iddirettore
    direttore
tborchestra
  • idorchestra
    orchestra
tbsolista
  • idsolista
    solista
e ultima quello che chiedi da prima domanda ;)

tbcd
  • idcd
    idsinfonia
    iddirettore
    idorchestra
    idsolista
naturalmente per capire bene questo è necessario compilare la tbcd con un formulario con usare le caselle di riepilogo....
ora prova a vedere se riesci a fare tu
fai sapere grazie
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
Avatar utente
Jack
Messaggi: 6
Iscritto il: sabato 12 novembre 2011, 13:29

Re: Riunire più risultati nello stesso campo

Messaggio da Jack »

vladko ha scritto: ...
e ultima quello che chiedi da prima domanda ;)

tbcd
  • idcd
    idsinfonia
    iddirettore
    idorchestra
    idsolista
L'utilizzo delle chiavi surrogate dovrebbero essere usate come rimedio estremo e non come metodo per collegare le tabelle di un DB relazionale, per un principiante che comincia con i DB relazionali è senza senso, anche perchè Openoffice mette a disposizione Componenti (Controlli senza interfaccia grafica) che permettono di collegare le tabelle con chiavi naturali.

Cordiali saluti. Jack
Avatar utente
Rebeltag
Messaggi: 9
Iscritto il: mercoledì 9 gennaio 2013, 23:47

Re: Riunire più risultati nello stesso campo

Messaggio da Rebeltag »

Grazie Vladko hai chiarito ulteriormente quanto detto dagli altri e mi ha i fatto fare un passo avanti dicendomi delle caselle di riepilogo ma qui mi blocco, non so come impostarle, allego una bozza del db, le varie tabelle convergono tutte nella tabella composizione, e fin qui tutto ok ho capito, credo :D, è sulle caselle di riepilogo che non so dove mettere le mani :(

@Jack scusa non avevo letto ancora il tuo messaggio, intendi dire che potrei usare le relazioni per richiamare direttamente solisti, direttori, orchestre ecc. in campi di una tabella riassuntiva?
Allegati
Achivio Musica.odb
(12.2 KiB) Scaricato 107 volte
ApacheOpenOffice 3.4.1 su Windows XP sp3

Ciò che ho sempre invidiato di Belgarath è la sua possibilità di trasformasi in lupo...
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Riunire più risultati nello stesso campo

Messaggio da Gaetanopr »

Ti ho creato 3 caselle di riepilogo prova a fare le altre tu altrimenti piu' tardi ti spiego. Comunque secondo me il database non è impostato bene ti mancano tutte le relazioni e hai una tabella solisti con idsolista quindi non puoi caricare 4 solisti(idsolista idsolista1-2 e 3) quale dei 4 campi colleghi all'idsolista della tabella solisti????? 3 rimangono fuori....ecco perchè ti avevo fatto creare una tabella di collegamento.In questo modo sono dei semplici campi senza relazione a nessuna tabella.
Tu per prima cosa impostati le relazioni(strumenti relazioni) e poi fai delle prove e così puoi renderti conto meglio.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Avatar utente
Jack
Messaggi: 6
Iscritto il: sabato 12 novembre 2011, 13:29

Re: Riunire più risultati nello stesso campo

Messaggio da Jack »

Rebeltag ha scritto: @Jack scusa non avevo letto ancora il tuo messaggio, intendi dire che potrei usare le relazioni per richiamare direttamente solisti, direttori, orchestre ecc. in campi di una tabella riassuntiva?
Quello che ho detto è di utilizzare le chiavi surrogate solo quando tra gli attributi di una entità non si riesce ad identificare una chiave univoca oppure se la chiave naturale è eccisivamente lunga. Ti consiglio questo libro, semplice e completo, non saprei se riesci ancora a comprarlo, data 1999, ma nelle biblioteche lo trovi sicuro.

Progettare database relazionali Riordan, Rebecca M.

es. qui lo trovi http://bct.comperio.it/opac/detail/view ... log:123404
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Riunire più risultati nello stesso campo

Messaggio da vladko »

@jack puoi fare quindi un esempio? o inserire un file?
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
Avatar utente
Jack
Messaggi: 6
Iscritto il: sabato 12 novembre 2011, 13:29

Re: Riunire più risultati nello stesso campo

Messaggio da Jack »

vladko ha scritto:@jack puoi fare quindi un esempio? o inserire un file?
Raccolta di noti beoni.
1 tabella nominativi
2 tabella vini
3 tabella vini-nominativi


un vino può essere bevuto da più persone
una persona può bere più vini
la relazione è molti con molti
Allegati
beoni.odb
(4.26 KiB) Scaricato 149 volte
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Riunire più risultati nello stesso campo

Messaggio da Gaetanopr »

Rebeltag ha scritto: sarebbe possibile invece avere una sola riga formata da due celle una con il nome dell'opera e di fianco un'altra cella con all'interno tutti i nomi dei solisti collegati a quest'opera (temo sia impossibile ma essendo incompetente non ne ho certezza), in alternativa sarebbe possibile ottenere come risultato sempre una sola riga con la prima cella il titolo dell'opera e di seguito tante celle per quanti sono i solisti? (oppure con i nomi dei solisti incolonnati ma senza avere la ripetizione del titolo dell'opera)
ho visto l'esempio allegato e alla fine credo che si arrivi allo stesso risultato del file che ho allegato io, pure io ho creato una tabella di collegamento tra le due tabelle che hanno relazioni molti a molti.Si creano sempre tante righe, se piu' nominativi bevono lo stesso vino si creano tante righe vino quanti sono i nominativi(questo è quello che Rebeltag non vorrebbe) ma non credo sia possibile ottenere, infatti consigliavo di estrapolare i dati in un foglio elettronico e togliere a mano i campi che si ripetono ma è un lavoraccio.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Avatar utente
Rebeltag
Messaggi: 9
Iscritto il: mercoledì 9 gennaio 2013, 23:47

Re: Riunire più risultati nello stesso campo

Messaggio da Rebeltag »

Gaetanopr ha scritto:
Rebeltag ha scritto: sarebbe possibile invece avere una sola riga formata da due celle una con il nome dell'opera e di fianco un'altra cella con all'interno tutti i nomi dei solisti collegati a quest'opera (temo sia impossibile ma essendo incompetente non ne ho certezza), in alternativa sarebbe possibile ottenere come risultato sempre una sola riga con la prima cella il titolo dell'opera e di seguito tante celle per quanti sono i solisti? (oppure con i nomi dei solisti incolonnati ma senza avere la ripetizione del titolo dell'opera)
ho visto l'esempio allegato e alla fine credo che si arrivi allo stesso risultato del file che ho allegato io, pure io ho creato una tabella di collegamento tra le due tabelle che hanno relazioni molti a molti.Si creano sempre tante righe, se piu' nominativi bevono lo stesso vino si creano tante righe vino quanti sono i nominativi(questo è quello che Rebeltag non vorrebbe) ma non credo sia possibile ottenere, infatti consigliavo di estrapolare i dati in un foglio elettronico e togliere a mano i campi che si ripetono ma è un lavoraccio.
Se ho capito bene jack diceva di evitare una tabella con tutti quei campi ID, cioè le chiavi surrogate, e di usare le chiavi naturali, cioè basarsi sulle relazioni tra le entità e i loro attributi per impostare le tabelle e le relazioni del db, la questione è che il sistema adottato da noi, anche io inzialmente avevo fatto lo stesso, porta quasi inevitabilemente a dover affiancare, nella stessa tabella, ad ogni chiave surrogata una chiave naturale non indicizzata per cui alla fine tutto diventa contorto... questo almeno è quello che ho capito.

Jack non è entrato nel merito sul come ottenere il risultato raggruppato in un solo campo come interessava a me, ma basta fare come ha detto Vladko usando una casella di riepilogo (che non ho capito io come si crea :P)
ApacheOpenOffice 3.4.1 su Windows XP sp3

Ciò che ho sempre invidiato di Belgarath è la sua possibilità di trasformasi in lupo...
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Riunire più risultati nello stesso campo

Messaggio da vladko »

non capisco dove viene il grande problema
ora 2 domande
1 vuoi fare un elenco cd o lista composizioni?
2 una composizione sola fa un cd o un cd ha tante composizioni?

ora due cose da dire
1 un db è una gande scatola che contiene tante scatole piccole una con il fianco a altra
2 per riempire consultare un db si usa altri strumenti che non le tabelle (sono form query report)

ora a te devo dire che la composizione si farà con un solista per ogni riga di tabella(quindi da ma tu potrai vedere una composizione che viene fatta da tanti solisti (query e report)

se il tuo problema è vedere una stampa a video o carta di una composizione con un elenco di solisti quello si chiama report e viene da una query
se ora non sai fare tra poco potrai vedere come fatto con di seguito l'esempio.

ma una buona cosa è sempre chiedere dove si vuole arrivare poi io anche dico che se la montagna non va a vladi vado io alla montagna :)
p.s. si anche a a me piace se jack entra nel merito ma fino ad ora niente musica, solo vino :)
Allegati
Achivio Musica_001.odb
(43.73 KiB) Scaricato 156 volte
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
Avatar utente
Rebeltag
Messaggi: 9
Iscritto il: mercoledì 9 gennaio 2013, 23:47

Re: Riunire più risultati nello stesso campo

Messaggio da Rebeltag »

Non so dirti dove sia esattamente il problema ho solo provato ad interpretare, con le mie scarsissime conoscenze in questo campo, quanto detto da Jack.

Tornando a noi, e poi rispondo pure alle tue domande, come avevo detto quello che voglio fare è piuttosto complesso per le mie conoscenze ma mi avete aiutato moltissimo tutti con le vostre indicazioni perchè mi avete permesso di capire come orientarmi e su cosa documentarmi.

ora rispondo alle tue domande

1) vorrei fare un database dei miei cd e file musicali ma impostandolo in modo da estenderlo con dati sui musicisti, interpreti ed altro inerente la musica dato che sono un musicista e mi servirebbe uno strumento del genere, ma ovviamente per adesso mi serviva impostare il nucleo fondamentale ed il mattone di tutto è la singola composizione da cui poi si sviluppano tutte le altre relazioni (la composizione è unica ma come abbiamo visto sviluppa molte relazioni)

2) una composizione può essere contenuta in uno o più cd (come le opere per esempio che possono essere ripartite in tre o quattro cd), ma un cd può contenere anche più composizioni, per questo come ho detto sopra la base di tutto è la singola composizione.

Ora, in base a quanto mi avete aiutato a capire, mi conviene per prima fare un progetto dove imposto tutto e individuo le entità che mi servono per poi associarvi gli attributi e solo dopo inizio a creare il db vero e proprio.

Infine, si il mio problema era che volevo stampare a video o su carta senza avere le ripetizioni di ogni record ed io credevo che il report mi visualizzasse quello che vedevo nel formulario, ma di questo mi preoccuperò in seguito perchè ho capito che è un passaggio distinto dalla creazione del db.
ApacheOpenOffice 3.4.1 su Windows XP sp3

Ciò che ho sempre invidiato di Belgarath è la sua possibilità di trasformasi in lupo...
Avatar utente
UTPiovene
Messaggi: 232
Iscritto il: giovedì 16 dicembre 2010, 11:24
Località: Piovene Rocchette per 36 ore alla settimana

Re: Riunire più risultati nello stesso campo

Messaggio da UTPiovene »

Ho seguito con interesse tutto lo svolgimento del "compito", anche se devo dire che non ne ho capito un granchè, ma mi riservo di aprire i db di esempio per approfondire.
Quello che ho capito io (almeno credo) è questo:
Jack ti dà la possibilità di impostare un database con il quale puoi fare molte ricerche incrociando i dati: cercando per solista puoi trovare le opere in cui è interprete; cercando un'opera troverai tutti i solisti; e via così
A te, almeno per il momento, interessano, come dato principale, solo le opere e farai ricerche solo sulle opere. E' esatto?
Se è così il db sarà più semplice e la visualizzazione di una opera e dei solisti, riportando una sola volta il nome dell'opera ed il nome di tutti i solisti collegati come desideri, la puoi fare con un formulario con all'interno un sotto-formulario (in sola lettura o anche per le modifiche o inserimento dati).
Il formulario principale farà riferimento alle opere, il sotto-formulario agli artisti.
Per la stampa si usano i report, che generalmente si basano sulle ricerche per filtrare i dati.
Spero di non aver detto corbellerie. In tal caso spero che qualcuno mi corregga.
S.O. Windows 10
LibreOffice Versione: 5.4.5.1
Gaetanopr
Volontario
Volontario
Messaggi: 3316
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: Riunire più risultati nello stesso campo

Messaggio da Gaetanopr »

UTPiovene ha scritto:Spero di non aver detto corbellerie. In tal caso spero che qualcuno mi corregga.
Invece hai capito bene il problema, come dici tu creando un formulario principale (opere) e collegandolo al secondario dei solisti scorrendo tra le opere vengono visualizzati nel formulario secondario i vari solisti di riferimento.Per quanto riguarda il report basta inserire i dati che devono figurare una sola volta in questo caso(opera, genere, anno di uscita ect ect)nell'intestazione di pagina e si rimedia al problema della duplicazione delle righe, invece i dati dei solisti e delle orchestre che possono essere piu' di uno per opera(piu' solisti e piu' orchestre per opera) si inseriscono nel dettaglio raggiungendo in questo modo lo scopo desiderato.
LibreOffice 7.2.2.2 windows 10
Openoffice 4.1.13 su windows 10
Avatar utente
Rebeltag
Messaggi: 9
Iscritto il: mercoledì 9 gennaio 2013, 23:47

Re: Riunire più risultati nello stesso campo

Messaggio da Rebeltag »

Scusatemi ieri ho avuro problemi con il pc che ho dovuto sistemare e non ho potuto leggere.

@UTPiovene: si per il momento partirò con l'archiviare le opere, composizioni in genere, poi estenderò agli altir dati, quello che mi interessava capire e grazie a voi ci sono riuscito (almeno in teoria poi devo vedere se riesco a realizzarlo :lol: ) era appunto come impostare le tabelle, poi tu mi hai dato delle dritte anche sul come visualizzare i dati come interessava a me ma di questo aspetto mi preoccupaerò dopo tanto è un aspetto distaccato dalla progetazione delle tabelle che è invece fondamentale impostare bene, vi farò sapere come procede, per ora non metto risolto al thread perchè sicuramente avrò bisogno di qualche altro chiarimento in merito.

Per il momento grazie di tutto è una comunità fantastica questa ;)
ApacheOpenOffice 3.4.1 su Windows XP sp3

Ciò che ho sempre invidiato di Belgarath è la sua possibilità di trasformasi in lupo...
Rispondi