Ho due tabelle, Tab_Ticket e Tab_Anagrafica_Dipendenti, cosi' strutturate:
codice:
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;
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_Matricola
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:
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
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.
Le caratteristiche di Tab_Ticket_2006 sono perfettamente identiche a quelle di Tab_Ticket.
Ho provato ad utilizzare il comando SQL UNION cosi':
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
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.
E' possibile, secondo voi, con una query piu' complessa gestire allo stesso modo l'interrrogazione dei dati?