Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di wdb
    Registrato dal
    Nov 2002
    Messaggi
    155

    [MySQL] select complicatina

    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?

  2. #2
    Utente di HTML.it L'avatar di wdb
    Registrato dal
    Nov 2002
    Messaggi
    155
    piccolo UP
    nessuno all'ascolto?

  3. #3
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120

    Re: [MySQL] select complicatina

    Non giurerei che la sintassi sia ammissibile, ma il concetto dovrebbe essere questo

    codice:
    SELECT COUNT(TK_Matricola)'Numero',
           AD_Cognome,
           AD_Nome
      FROM (SELECT * FROM Tab_Ticket UNION SELECT * FROM Tab_Ticket_2006) AS TT,
           Tab_Anagrafica_Dipendenti
     WHERE AD_Matricola = TK_Matricola
     GROUP BY TK_Matricola
    
     
     ORDER BY Numero DESC,
              AD_Cognome ASC
     LIMIT 0 , 10

  4. #4
    Utente di HTML.it L'avatar di wdb
    Registrato dal
    Nov 2002
    Messaggi
    155
    Grazie moltissime luca200: funziona perfettamente!

    E complimenti perche' proprio questa sintassi non la conoscevo (eppure ci lavoro da parecchi anni).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.