[MySQL] Ottenere più risultati in un unico campo

Andrea71

Nuovo Utente
4 Dic 2018
3
0
1
Buonasera a tutti,
sono nuovo di questo forum e da poco ho iniziato a lavorare con i database ed a muovere i primi passi con le query.
Ad oggi ho un problemino….ho creato due tabelle, importando dei dati che mi ha fornito un cliente.
Nella prima: record_id, nome, cognome, qualifica, data_inizio, data_fine
Nella seconda record_id, matricola_id, path, file
L'obiettivo è creare una terza tabella con solo alcuni dei campi presenti, ovvero
nome, cognome, qualifica e FILE
Il problema che mi sono trovato ad affrontare, è che l'utente PIPPO ad esempio, ha associati più di un FILE,
quindi mi trovo tanti record PIPPO, qunti sono i file, mente il cliente, mi ha chiesto di avere in output un solo
record e nel campo FILE, visualizzare: pluto.jpg , paperino.txt , minnie.pdf....
Qualcuno ha idea di come si possa fare?
Sono giorni che sto impazzendo!!!
Grazie a tutti anticiapatamente
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
la prima tabella ha l'aria di essere una specie di anagrafica con
record_id, nome, cognome, qualifica, data_inizio, data_fine

nella seconda esiste una "matricola_id" che potrebbe essere la matricola della persona e trovare posto nella prima tabella

per cui la prima tabella potrebbe essere strutturata in

tabella1
id
, nome
, cognome
, matricola
, qualifica
, data_inizio
, data_fine

la seconda potrebbe essere strutturata in

tabella2
id
, t1_id
, path
, file

nella tabella2 potresti avere molti record per ciascun t1_id,
usando il tuo esempio e considerato presente il record id=1 nella tabella1
nella tabella2 avresti,

1, 1, pluto.jpg
2, 1, paperino.txt
3, 1, minnie.pdf
....

non dovrebbe servirti una terza tabella perchè puoi applicare una semplice select,

select
t1.nome
, t1.cognome
, t1.matricola
, t1.qualifica
, t2.path
, t2.file
from tabella1 t1
left join tabella2 t2
on t1.id=t2.t1_id

che ti restituisce l'elenco dato dalla join delle tabella1 e tabella2
 

Andrea71

Nuovo Utente
4 Dic 2018
3
0
1
la prima tabella ha l'aria di essere una specie di anagrafica con
record_id, nome, cognome, qualifica, data_inizio, data_fine

nella seconda esiste una "matricola_id" che potrebbe essere la matricola della persona e trovare posto nella prima tabella

per cui la prima tabella potrebbe essere strutturata in

tabella1
id
, nome
, cognome
, matricola
, qualifica
, data_inizio
, data_fine

la seconda potrebbe essere strutturata in

tabella2
id
, t1_id
, path
, file

nella tabella2 potresti avere molti record per ciascun t1_id,
usando il tuo esempio e considerato presente il record id=1 nella tabella1
nella tabella2 avresti,

1, 1, pluto.jpg
2, 1, paperino.txt
3, 1, minnie.pdf
....

non dovrebbe servirti una terza tabella perchè puoi applicare una semplice select,

select
t1.nome
, t1.cognome
, t1.matricola
, t1.qualifica
, t2.path
, t2.file
from tabella1 t1
left join tabella2 t2
on t1.id=t2.t1_id

che ti restituisce l'elenco dato dalla join delle tabella1 e tabella2

Ciao,
intanto grazie per l'aiuto.
Volevo dirti pero che la select che mi indichi, mi restutuisce questi record:
NOME COGN RUOLO MATRIC FILE
Giovanni| Grasso |0162 |003551 | 003552_3.tif
Giovanni| Grasso |0162 |003551 | 003552_2.tif
Giovanni| Grasso| 0162 |003551 | 003552_1.tif
Ciò che serve a me, è avere i tre file, associati all'utente, in un unica cella "FILE" separati da una virgola ed ottenere per ogni persona un solo record.
Le due tabelle su cui lavoro, hanno in comune il campo RECORD_ID (presente in entrambe)

Grazie, buona giornata
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
il sistema delle tabelle indicate da marino51 secondo me è il più adatto, poi è da cercare la select che faccia quello che vuoi, al limite due select la prima ti estrae la anagrafica, la seconda in base all'estratto dell'anagrafica il file, usandi es php potrebbero essere due while associati
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
si può ottenere il risultato che desideri, ma il modo per ottenerlo é specifico per il database che stai usando,
posso suggerirti soluzioni per sql server che non sono compatibili con mysql
puoi cercare soluzioni con
"how to concatenate rows in a single column in sql"
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
giusto come esempio con "sql server 2005"
upload_2018-12-7_10-41-28.png
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
occhio però la atbella fatta così è ridondante, secondo me meglio due tabelle tra loro collegate
il mio é un esempio per indicare che il "desiderio" é ottenibile,

ovvero ho usato la stessa tabella per comodità, ma nessuno vieta che la @tabella t1 all'interno di substring sia una tabella differente, in altre parole all'interno di substring c'é una select a se stante (join) che può "pescare" da qualunque tabella lecita
Codice:
            SELECT ', '+t1.FILENAME  AS [text()]
            FROM @tabella t1
            WHERE t1.MATRIC = t2.MATRIC
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
R Ottenere il numero di riga di una tabella mysql contenente un nome specifico PHP 1
K form Inserimento record mysql PHP 2
P Mysql lento a cancellare MySQL 1
P Codifica caratteri speciali mysql php PHP 0
N MAX() + ADD_DATE - per update su Mysql MySQL 0
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
W MySQL ciclo in SELECT MySQL 0
L Mysql gestionale multipiattaforma MySQL 0
W MySQL SELECT list dinamica MySQL 0
M utilizzo mysql in nodejs - crea createdAt e updateAt MySQL 1
T colonne di tabelle mysql ordinate MySQL 0
M Sintassi "personalizzata" per mysql workbench? MySQL 0
A Mysql MySQL 0
F Ricreare struttura php+mysql su Xampp Apache 0
M Array associativi php su 2 campi mysql PHP 10
Z Controllo giorni MYSQL PHP 0
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
L Mysql: Nascondere le pagine dopo una ricerca PHP 1
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
S problema con recupero dati tabella mysql PHP 2
E Progressbar estrazione dati da tabella mySQL Ajax 9
Z MySql injection PHP PHP 1
D controllare valore in tabella mysql PHP 0
A pulsante di update campo mysql con javascript Javascript 2
R Tutto su utf-8 ma ancora problemi con i caratteri speciali in mysql MySQL 1
T differenza fra mysql xampp e un mysql server Database 0
R Importazione csv su mysql tramite array PHP 2
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
D problema php mysql PHP 1
D problema php mysql PHP 1
N Server mysql non raggiungibile da connessione esterna MySQL 1
B Crea pdf da tabella mysql "ultima riga modificata" MySQL 4
D evitare di inserirre duplicati in mysql PHP 4
L salvare codice html in mysql PHP 3
L Google chart php mysql PHP 2
S Gestire scelta dropdown con dati da Mysql PHP 2
K cron job mysql PHP 3
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
R Errore UPDATE tabella mysql PHP 1
R Caricamento immagine su cartella remota + mysql PHP 3
D Emoji in mysql Database 0
L Aiuto per programma web php/mySQL PHP 2
S Problema esportazione tabelle Mysql in Excel PHP 0
S Cancellare una riga MYSQL PHP 1
L Ricerca valore mysql e incremento PHP 73
G database mysql contengono informazioni ? MySQL 0

Discussioni simili