Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Problema con Query su MariaDB

    Ciao a tutti, ho un problema strano sulla seguente query:


    codice:
    WITH mt AS (SELECT id, MAX(id), dipendenti_id FROM assunzioni group BY dipendenti_id)
                       SELECT d.*, mt.dipendenti_id, mt.id FROM mt
                       LEFT JOIN assunzioni a ON a.id = mt.id
                       LEFT JOIN dipendenti d ON d.id = mt.dipendenti_id
                       WHERE (datadimissione IS NULL OR datadimissione > CURDATE()-1) AND azienda_id = 1
                       GROUP BY d.id ORDER BY Cognome
    La query dovrebbe estrarre tutti i dipendenti che hanno su datadimissione un valore nullo o una data maggiore di quella attuale.
    Premetto che fino a poco tempo fa funzionava tutto regolarmente e poi tutto ad un tratto ha iniziato a non listare più alcuni dipendenti che in realtà dovrebbero rientrare nel risultato.
    La cosa strana è che questo problema si sta verificando dall'utente finale, mentre nel mio PC, pur avendo importato lo stesso database, continua a funzionare tutto regolarmente.

    Alcune cose che posso dire e che ho verificato sono:
    - MariaDB è installato su Windows 10 sia dall'utente finale che nel mio ambiente di test.
    - La versione di MariaDB è la stessa in tutti e due gli ambienti
    - Ho provato a fare delle query specifiche di estrazione dalle singole tabelle e i dati coincidono perfettamente in tutti e due gli ambienti
    - Non vengono estratti nemmeno i record che su datadimissione hanno il valore NULL, ma solo alcuni, mentre la logica dice che se c'è un errore sulla query non dovrebbe farne vedere nemmeno uno di questi.

    Non so più che altro verificare.
    Avete qualche consiglio/idea da darmi?
    Grazie.
    Stefanoxjx

  2. #2
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Quote Originariamente inviata da stefanoxjx Visualizza il messaggio
    Ciao a tutti, ho un problema strano sulla seguente query:


    codice:
    WITH mt AS (SELECT id, MAX(id), dipendenti_id FROM assunzioni group BY dipendenti_id)
                       SELECT d.*, mt.dipendenti_id, mt.id FROM mt
                       LEFT JOIN assunzioni a ON a.id = mt.id
                       LEFT JOIN dipendenti d ON d.id = mt.dipendenti_id
                       WHERE (datadimissione IS NULL OR datadimissione > CURDATE()-1) AND azienda_id = 1
                       GROUP BY d.id ORDER BY Cognome
    La query dovrebbe estrarre tutti i dipendenti che hanno su datadimissione un valore nullo o una data maggiore di quella attuale.
    Premetto che fino a poco tempo fa funzionava tutto regolarmente e poi tutto ad un tratto ha iniziato a non listare più alcuni dipendenti che in realtà dovrebbero rientrare nel risultato.
    La cosa strana è che questo problema si sta verificando dall'utente finale, mentre nel mio PC, pur avendo importato lo stesso database, continua a funzionare tutto regolarmente.

    Alcune cose che posso dire e che ho verificato sono:
    - MariaDB è installato su Windows 10 sia dall'utente finale che nel mio ambiente di test.
    - La versione di MariaDB è la stessa in tutti e due gli ambienti
    - Ho provato a fare delle query specifiche di estrazione dalle singole tabelle e i dati coincidono perfettamente in tutti e due gli ambienti
    - Non vengono estratti nemmeno i record che su datadimissione hanno il valore NULL, ma solo alcuni, mentre la logica dice che se c'è un errore sulla query non dovrebbe farne vedere nemmeno uno di questi.

    Non so più che altro verificare.
    Avete qualche consiglio/idea da darmi?
    Grazie.
    Sinceramente non so come possa funzionare, visto che raggruppi per alcuni campi (GROUP BY) ma ne esponi altri.

    Probabilmente hai impostato a livello di configurazione del DB, la gestione della group by in modo differente sui due ambienti.

    Io la query la riscriverei così

    codice:
    SELECT *
    FROM dipendenti d
    WHERE EXISTS
        (SELECT 1 FROM assunzioni a
        WHERE a.id_dipendente = d.id
        AND (a.datadimissione IS NULL OR a.datadimissione > CURDATE()-1))
    Non è ben chiaro l'ID_AZIENDA su che tabella si trova, dalla tua query, quindi non l'ho considerato nella mia, ma puoi sempre aggiungerlo

  3. #3
    Grazie per l'aiuto.
    La tua query sembra funzionare a dovere.
    L'ho adattata con l'id_azienda e con un filtro per raffinare la ricerca e devono ancora confermare al 100%, ma sembra essere ok.

    Grazie ancora.
    Stefanoxjx

  4. #4
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Quote Originariamente inviata da stefanoxjx Visualizza il messaggio
    Grazie per l'aiuto.
    La tua query sembra funzionare a dovere.
    L'ho adattata con l'id_azienda e con un filtro per raffinare la ricerca e devono ancora confermare al 100%, ma sembra essere ok.

    Grazie ancora.
    Di niente

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 © 2025 vBulletin Solutions, Inc. All rights reserved.