SELECT

Sto provando a prepare un db per la gestione del personale nel quale sono presenti, tra le altre, le sguenti tabelle:

  • tposizioni_per_anagrafica (idanagrafica, idposizione, dataingresso, datauscita) la data d'uscita è impostata di default 31/12/3000 e viene aggiornata alla reale uscita del dipendente.
  • tapplicazioni_per_anagrafica (idanagrafica, .idruolo)

La select che ho preparato è la seguente:

"SELECT Count(tposizioni_per_anagrafica.idanagrafica) AS Tot_dip_per_ruolo, tapplicazioni_per_anagrafica.idruolo

FROM tposizioni_per_anagrafica LEFT JOIN tapplicazioni_per_anagrafica ON tposizioni_per_anagrafica.idanagrafica = tapplicazioni_per_anagrafica.idanagrafica

GROUP BY tposizioni_per_anagrafica.data_ingresso, tposizioni_per_anagrafica.data_uscita, tapplicazioni_per_anagrafica.idruolo

HAVING (((tposizioni_per_anagrafica.data_ingresso)<=#3/28/2006#) AND ((tposizioni_per_anagrafica.data_uscita)>=#3/28/2006#))

ORDER BY tapplicazioni_per_anagrafica.idruolo".

PURTROPPO QUANDO I DIPENDENTI HANNO UNA DATA_INGRESSO DIVERSA IL DB DUPLICA IL NUMERO DEGLI APPLICATI PER RUOLO!!!!!!

Qualcuno può darmi una mano?????

Grazie

Giovanni

inviato 10 anni fa
bonann23
X 0 X

Sinceramente non ho letto tutto il post, ma se metti DISTINCT, cambia qualcosa?

SELECT DISTINCT ....

ciao

Lore

risposto 10 anni fa
Lore
Lore
1
X 0 X

No, purtroppo il risultato è sempre lo stesso.

Sob!!!!!!

risposto 10 anni fa
bonann23
X 0 X

Descrivi la struttura delle tabelle interessate dalla select e spiega nel tettagio cosa vuoi che ti venga restituito dalla query.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Ok adesso proverò ad essere più preciso.

la struttura delle tabelle  e la seguente:

  • tposizioni_per_anagrafica (

      idanagrafica int(11) default '0',

      idposizione int(11) default NULL,

      dataingresso date default NULL,

      datauscita int(11) default NULL

    )

  • tapplicazioni_per_anagrafica (

      idanagrafica int(11) default NULL,

      idruolo int(11) default NULL

    )

Lo scopo della "SELECT" dovrebbe essere quello di contare quanti dipendenti sono apllicati per ogni ruolo alla data scelta.

Naturamente ho altre tabelle che specificano sia le anagrafiche che i ruoli.

Spero di essere stato più chiaro

Grazie giovanni

risposto 10 anni fa
bonann23
X 0 X

allora devi togliere le date dalla GROUP BY e devi trasformare la HAVING in una WHERE.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Se tolgo il"GROUP BY" e cambio l'istruzione "HAVING" con l'istruzione "WHERE" il risultato sarà quello d'avere

il dettaglio di tutti i dipendenti e la loro applicazione; invece, io ho bisogno di sapere "QUANTI DIPENDENTI SONO APPLICATI PER RUOLO?"

Grazie giovanni

risposto 10 anni fa
bonann23
X 0 X

Non ho detto di togliere il GOUP BY ma le date dal GOUP BY  >:(

Prova così:

SELECT
   COUNT(tposizioni_per_anagrafica.idanagrafica) AS Tot_dip_per_ruolo,
   tapplicazioni_per_anagrafica.idruolo
FROM
   tposizioni_per_anagrafica
      LEFT JOIN tapplicazioni_per_anagrafica
         ON tposizioni_per_anagrafica.idanagrafica = tapplicazioni_per_anagrafica.idanagrafica
GROUP BY
   tapplicazioni_per_anagrafica.idruolo
WHERE 
   tposizioni_per_anagrafica.data_ingresso <= '2006-3-28' AND
   tposizioni_per_anagrafica.data_uscita >= '2006-3-30'
ORDER BY
   tapplicazioni_per_anagrafica.idruolo

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

purtroppo anche così non riesco a farla girare.

ottengo l'errore " operatore mancante prima del WHERE

giovanni

risposto 10 anni fa
bonann23
X 0 X

Si, ho invertito l'ordine  :P

SELECT
   COUNT(tposizioni_per_anagrafica.idanagrafica) AS Tot_dip_per_ruolo,
   tapplicazioni_per_anagrafica.idruolo
FROM
   tposizioni_per_anagrafica
      LEFT JOIN tapplicazioni_per_anagrafica
         ON tposizioni_per_anagrafica.idanagrafica = tapplicazioni_per_anagrafica.idanagrafica
WHERE 
   tposizioni_per_anagrafica.data_ingresso <= '2006-3-28' AND
   tposizioni_per_anagrafica.data_uscita >= '2006-3-30'
GROUP BY
   tapplicazioni_per_anagrafica.idruolo
ORDER BY
   tapplicazioni_per_anagrafica.idruolo
risposto 10 anni fa
Gianni Tomasicchio
X 0 X

 :bye: Grazie !!!!!

Credo di avere bisogno d'approfondire SQL

Giovanni

risposto 10 anni fa
bonann23
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda