[SQL] Piccolo Rompicato

di il
3 risposte

[SQL] Piccolo Rompicato

Buon giorno a tutti,
avrei un piccolo rompicapo da proporvi con sql .
Allora ho una tabella con tre campi:

-NumeroDocumento
-Cliente
-DataDocumento

Quello che vorrei fare è riuscire a costruire una query che mi restituisce tutti i Clienti che non sono stati serviti oggi. Occhio però che non è possibile mettere un semplice
datadocumento <> Date()
, in quanto nella tabella ci sono diversi records e sicuramente ,sebbene non sia stato servito "oggi", il cliente ha nella tabella un'altro record con una data diversa da oggi. Il risultato è quindi che sebbene io l'abbia fornito oggi, mi comparirà comunque a schermo in quanto è stato fornito in un'altra data (ingannando così il mio vincolo).

Spero di essere stato chiaro e spero che sarete in grado di aiutarmi. Per qualsiasi chiarimento chiedete pure, grazie

Antonio

3 Risposte

  • Re: [SQL] Piccolo Rompicato

    Provo ad aiutarti nonostante io sia alle prime armi, ma è simile a qualcosa contro cui mi sono scontrato recentemente:
    Cosa ne pensi di fare un "GROUP BY" sulla persona, un "max(Data)" nel campo "SELECT" e poi applicare un filtro (WHERE? qui non son sicuro) per vedere tutte le date < di oggi?
  • Re: [SQL] Piccolo Rompicato

    thebusterazz ha scritto:


    ...Allora ho una tabella con tre campi:
    -NumeroDocumento
    -Cliente
    -DataDocumento
    Quello che vorrei fare è riuscire a costruire una query che mi restituisce tutti i Clienti che non sono stati serviti oggi. ...
    Estrai da [TabDocumenti] i clienti che sono stati serviti oggi, che diventerà una "tabella derivata" T2 di una query dove ci sarà anche con la tabella clienti [TabClienti]. Metti a sinistra di una left join [TabClienti] e T2 a destra, unisci per codice cliente, ovviamente, e limita il risultato a quelli che hanno il valore NULL in T2.Cliente. In teoria funziona. Perché c'è anche una tabella [TabClienti], vero?
  • Re: [SQL] Piccolo Rompicato

    Devi partire da quelli che hai servito oggi e per differenza derivarti gli altri, qualcosa del tipo
    
    SELECT nome_cliente FROM Clienti WHERE id_cliente NOT IN (SELECT id_cliente FROM Movimenti GROUP BY id_cliente WHERE dataDocumento = date());
    
    Non l'ho provata ma l'idea è questa
Devi accedere o registrarti per scrivere nel forum
3 risposte