Selezionare ultimo record di una sotto query

stefanoxjx

Utente Attivo
24 Feb 2017
46
1
8
56
Ti ringrazio per l'impegno che ci stai mettendo per aiutarmi, ma qui non ne vengo fuori:
Cattura.PNG

Eppure ho ricontrollato 10 volte la query e mi sembra corretta.
Io uso Heidi SQL per testare le query, non credo dipenda da questo, ma tu cosa usi?
A questo punto cerco di allinearmi con il tuo ambiente.
Grazie.
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
scusami, ho dimenticato le chioccioline davanti ai nomi delle tabelle, toglile
SQL:
    FROM      dipendenti  d
    LEFT JOIN cooperative c ON d.cooperative_id = c.id
    LEFT JOIN assunzioni  a ON a.dipendenti_id  = d.id

a me servono per definire tabelle temporanee in modo da non dover creare un database per provare le query
 
  • Like
Reactions: stefanoxjx

stefanoxjx

Utente Attivo
24 Feb 2017
46
1
8
56
Ciao,
avevo già tolto le chioccioline ma senza esito positivo.
Questa è la query sulla quale sto facendo prove ora:
Codice:
SELECT *
FROM (
    SELECT
      d.id             AS d_id
    , d.cognome        AS d_cognome
    , d.nome           AS d_nome
    , d.Cooperative_Id AS d_Cooperative_Id
    , c.id             AS c_id
    , c.cooperativa    AS c_cooperativa
    , a.id             AS a_id
    , a.dipendenti_id  AS a_dipendenti_id
    , a.tipo           AS a_tipo
    , a.dataassunzione AS a_dataassunzione
    , a.datadimissione AS a_datadimissione
    , ( SELECT max(x.dataassunzione) FROM assunzioni x WHERE x.dipendenti_id = d.id ) AS x_dataassunzione
    FROM      dipendenti  d
    LEFT JOIN cooperative c ON d.cooperative_id = c.id
    LEFT JOIN assunzioni  a ON a.dipendenti_id  = d.id
) y
WHERE ( a_dipendenti_id  is null OR ( a_datadimissione is not null AND x_dataassunzione = a_dataassunzione ) )
  AND ( d_cognome LIKE '%%' OR d_nome LIKE '%%' )
  AND d_Cooperative_Id = 1
ORDER BY d_cognome, d_nome "%%") AND d_Cooperative_Id = 1 ORDER BY d_cognome, d_nome

e questo è il risultato:


Cattura.PNG


Ho provato a modificare la query in vari modi cercando di capire dove sta il problema, ma ho sempre errore 1064.
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
il primo errore, riporta la chiocciolina,

il secondo errore evidenzia un copia incolla fatto male vedi la differenza tra la tua e la mia query, in particolare la parte terminale che deve essere
SQL:
) y
WHERE ( a_dipendenti_id  is null OR ( a_datadimissione is not null AND x_dataassunzione = a_dataassunzione ) )
--WHERE ( a_dipendenti_id  is null OR ( a_datadimissione is null AND x_dataassunzione = a_dataassunzione ) )
  AND ( d_cognome LIKE '%%' OR d_nome LIKE '%%' )
  AND d_Cooperative_Id = 1
ORDER BY d_cognome, d_nome

ovviamente puoi omettere la clausola where preceduta dal commento ( -- )
 
  • Like
Reactions: stefanoxjx

stefanoxjx

Utente Attivo
24 Feb 2017
46
1
8
56
Ciao, scusa se non ho più risposto, ma visto che non riuscivo ad avere i risultati che volevo mi sono preso del tempo per fare un po' di prove e studiare l'argomento.
Alla fine credo di aver risolto il mio problema con una query banale:
Codice:
SELECT d.*, a.* FROM dipendenti d 
INNER JOIN assunzioni a ON a.dipendenti_id = d.id
WHERE d.Cooperative_Id = 1 AND a.datadimissione IS NULL GROUP BY d.id ORDER BY Cognome

Devo ancora capire se veramente è la soluzione al mio problema, perchè i dati da verificare sono tanti, ma da una prima analisi sembrerebbe essere ok.
Ti ringrazio comunque per l'impegno che ci hai messo per aiutarmi e anche per l'aiuto, perchè anche questa query è nata traendo spunto da quelle che mi hai proposto tu :)
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
Alla fine credo di aver risolto il mio problema con una query banale
sono contento che tu sia riuscito a risolvere, anche se provando la query che hai postato, non ottengo i risultati voluti,

puoi confrontare i risultati della query che seleziona i lavoratori non assunti " a.datadimissione IS NOT NULL" nella prima lista con i risultati della tua query nella seconda lista

le due liste differiscono in modo sostanziale, la tua query non soddisfa gli obiettivi indicati nel primo e nel settimo post

1625318811057.png


poi vedi tu ......
 

Allegati

  • 1625318503018.png
    1625318503018.png
    40,3 KB · Visite: 127
  • 1625318757792.png
    1625318757792.png
    40,1 KB · Visite: 130
Ultima modifica:
  • Like
Reactions: stefanoxjx

stefanoxjx

Utente Attivo
24 Feb 2017
46
1
8
56
Ciao, come ti ho detto devo ancora finire di verificare se i risultati sono effettivamente quelli voluti.
Mi ci vorrà un po' di tempo :)
 
Discussioni simili
Autore Titolo Forum Risposte Data
S [PHP] Selezionare ultimo campo ed escludere doppioni PHP 16
B Selezionare un'immagine e salvare la selezione Photoshop 3
M Come selezionare e deselezionare radiobutton con jquery jQuery 1
Y Vorrei selezionare un colore di sfondo per una pagina web Javascript 0
S Upload file senza doverlo selezionare PHP 2
S Selezionare e deselezionare checkbox Javascript 0
M [PHP] Selezionare immagini directory non presenti in db PHP 11
S [PHP] selezionare colonna tabella utilizzando un array PHP 1
S [PHP] Selezionare i campi non in comune con le altre colonne della tabella PHP 4
L [PHP] CHECKBOX DA SELEZIONARE IN UNA TABELLA PHP 4
S [PHP] selezionare colonne in comune con un altra tabella PHP 5
T selezionare terza colonna della relatica row Database 2
G [Javascript] Selezionare una checkbox in maniera condizionata Javascript 5
G [PHP] Selezionare OGGI anno precedente per query sql PHP 2
A [RISOLTO] PHP Selezionare tutti i file con stessa estensione PHP 2
otto9due Selezionare singoli giorni su datepiker jQuery 1
S [PHP] Selezionare dati in intervallo di tempo PHP 21
gandalf1959 Selezionare un intervallo tra due date, php e mysql PHP 2
M [PHP] selezionare dati da db e fare confronti PHP 0
L [PHP] selezionare righe di una tabella con le checkbox e cancellarle PHP 2
R [Photoshop] Selezionare elemento in immagine ed esportarlo Photoshop 3
S [PHP] Selezionare tutte le colonne meno due PHP 6
asevenx Selezionare elementi da un elenco in modo dinamico e inviarli al database PHP 0
C selezionare distinti id e sommare uguali PHP 1
asevenx Realizzare modulo per selezionare elementi da una lista PHP 1
M Selezionare un risultato ogni 10 da select MySQL 4
L [php e mysql] selezionare sia i selezionati e i non selezionati PHP 1
M Selezionare un record da una tabella continua MS Access 0
H Selezionare la versione di Access Runtime in base all' applicazione MS Access 0
H Selezionare la versione di Access Runtime in base all' applicazione MS Access 0
F Selezionare voce di menu attiva HTML e CSS 1
asevenx selezionare prossima data da database PHP 2
T selezionare un campo da un db con radio button PHP 0
M Tabella PHP con sorgente dati csv: selezionare le riche e compilare Form eMail PHP 1
P Impossibile selezionare il database PHP 7
P impossibile selezionare il database PHP 0
felino Selezionare le colonne con una certa condizione PHP 2
S Selezionare files con drag and drop prima di upload PHP 0
F selezionare puntatore google engine Javascript 0
L Selezionare query da menu a tendina MS Access 2
M Selezionare quantità spostando una "barra" Javascript 5
M Selezionare dati tra due tabelle Database 3
M Selezionare dati tra due tabelle PHP 1
F selezionare dati tra due tabelle e prendere max valori PHP 10
M Selezionare un campo alla volta su un ciclo while PHP 47
T selezionare dati da mysql mediante form PHP 12
D selezionare solo dati non presenti in entrambe le tabelle PHP 5
S Selezionare campi da una tabella,vincolati da un'altra tabella Database 4
neo996sps [FORM] selezionare solo file con estensione MP3 HTML e CSS 2
D Selezionare tutti i checkbox di un form con jQuery jQuery 1

Discussioni simili