Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107

    [Mysql] Query che prende l'ultima fattura

    Salve a tutti, mi sto perdendo in un bicchier d'acqua...
    Devo fare una query di questo tipo

    codice:
    SELECT * FROM clienti
    LEFT OUTER JOIN fatture on fattura_cliente=idcliente
    Devo però far prendere solo L'ULTIM fattura (l'ultimo idfattura, per intenderci)

    mi date una mano?
    Guybrush Threepwood

  2. #2
    usa LIMIT() e ORDER BY() DESC

  3. #3
    ma spiegati meglio: vuoi l'elenco dei clienti, con a fianco l'ultima fattura emessa per ognuno di essi? Che succede se per un cliente non hai mai emesso fattura?

  4. #4
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    Grazie, il problema è che fa parte di una query molto piu ampia e questa è solo una delle LEFT OUTER che ci sono dentro.
    Il limit/orderby li posso usare anche sul left outer o solo sull'intera query?
    Guybrush Threepwood

  5. #5
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    (alternativa faccio una subquery, magari)
    Guybrush Threepwood

  6. #6
    difficile dire le cose per un "pezzettino"... prova a postare il bestione e a spiegare bene lo scenario

  7. #7
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    hai ragione anche tu ^_^
    cerco di semplificare la query globale
    codice:
    SELECT              * , [campi specifici... ]
    FROM                elementi
    
    
    LEFT OUTER JOIN     regioni as R1 on ele_regione=R1.REGIONE
    LEFT OUTER JOIN     regioni as R2 on ele_provincia=R2.PROV
    LEFT OUTER JOIN     tipo on ele_tipo=idtipo 
    LEFT OUTER JOIN     ricevute on r_ele=idele
    LEFT OUTER JOIN     dipendenti on idele=d_elemento
    
    WHERE [... varie where ....]
    GROUP BY idele
    ORDER BY            ORDINAMENTO, ele_ruolo

    Cosa fa in pratica: prende tutti i clienti e li relazione con una serie di informazioni.
    La cosa che mi serve è prendere l'ultima ricevuta emessa per vedere la scadenza (e mettere un alert nel caso in cui sia scaduta)
    Guybrush Threepwood

  8. #8
    mmmm forse ti conviene fare una sub-query da usare in JOIN al posto di ricevute usando appunto LIMIT, ORDER BY e GROUP BY; provala isolata e vedi se ti restituisce il risultato che vuoi; l'importante è farsi restituire la chiave per fare la join

    per la parte "funzionale": cosa succede se hai n fatture, l'ultima che scade tra un mese, ma la penultima già scaduta e non pagata? se prendi solo l'ultima, la segnalazione salta...

  9. #9
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    E un problema che risolvo prima, non esiste (in questo caso) una ricevuta vecchia non pagata. sono ricevute annuali, quindi il problem (fortunatamente) non me lo pongo!
    Provo subito!
    Guybrush Threepwood

  10. #10
    Utente di HTML.it L'avatar di Threepwood
    Registrato dal
    Feb 2003
    Messaggi
    2,107
    dici di fare una cosa così?

    LEFT OUTER JOIN (select * from ricevute where... order by idr desc limit 1) as ultimaricevuta
    Guybrush Threepwood

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.