Ho due tabelle, Tab_Ticket e Tab_Anagrafica_Dipendenti, cosi' strutturate:
La Tab_Ticket puo' contenere piu' ricorrenze a parita' di TK_Matricola mentre la Tab_Anagrafica_Dipendenti ha una sola ricorrenza per ciascun valore di AD_Matricolacodice:CREATE TABLE `Tab_Ticket` ( `TK_Number` int(11) NOT NULL default '0', `TK_Matricola` int(11) NOT NULL default '0', `TK_Oggetto` varchar(60) NOT NULL default '', `TK_Problema` text NOT NULL, `TK_Responso` varchar(1000) NOT NULL default ' ' ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `Tab_Anagrafica_Dipendenti` ( `AD_Matricola` int(11) NOT NULL default '0', `AD_Cognome` varchar(40) NOT NULL default '', `AD_Nome` varchar(40) NOT NULL default '' ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Devo eseguire una query su entrambe in modo da visualizzare i nomi dei dieci dipendenti che hanno piu' righe in Tab_Ticket (in pratica i dieci dipendenti che hanno fatto piu' richieste di assistenza tecnica presso l'help desk aziendale).
Ho risolto con questa query:
Ora pero' ho un problema che non riesco a risolvere; invece di avere una sola Tab_Ticket, ne ho, ad esempio e per semplificare, due: ho aggiunto la Tab_Ticket_2006 dove ho travasato tutti i ticket dell'anno precedente.codice:SELECT COUNT(TK_Matricola)'Numero', AD_Cognome, AD_Nome FROM Tab_Ticket, Tab_Anagrafica_Dipendenti WHERE AD_Matricola = TK_Matricola GROUP BY TK_Matricola ORDER BY Numero DESC, AD_Cognome ASC LIMIT 0 , 10
Le caratteristiche di Tab_Ticket_2006 sono perfettamente identiche a quelle di Tab_Ticket.
Ho provato ad utilizzare il comando SQL UNION cosi':
ma con scarsi risultati in quanto puo' accadere che mi visualizzi lo stesso codice matricola due volte (uno lo pesca da Tab_Ticket ed un altro da Tab_Ticket_2006) rendendo vano quindi il mio scopo che e' di visualizzare i dieci dipendenti che hanno fatto piu' richieste di assistenza tecnica all'help desk aziendale negli ultimi due anni.codice:SELECT COUNT(TK_Matricola)'Numero', AD_Cognome, AD_Nome FROM Tab_Ticket, Tab_Anagrafica_Dipendenti WHERE AD_Matricola = TK_Matricola GROUP BY TK_Matricola UNION SELECT COUNT(TK_Matricola)'Numero', AD_Cognome, AD_Nome FROM Tab_Ticket_2006, Tab_Anagrafica_Dipendenti WHERE AD_Matricola = TK_Matricola GROUP BY TK_Matricola ORDER BY Numero DESC, AD_Cognome ASC LIMIT 0 , 10
E' possibile, secondo voi, con una query piu' complessa gestire allo stesso modo l'interrrogazione dei dati?

Rispondi quotando

